c# out原理 ref_Unity3D 实用小技巧 C# 常用基础代码汇总

这篇博客汇总了Unity3D中C#的基础代码,包括DateTime日期时间的操作,如获取年月日、时分秒,以及各种格式转换。还介绍了字符串的转换、长度获取、编码解码、StringBuilder拼接、字符检查等功能。此外,文章提及了变量的ref和out参数的使用差异。适合Unity初学者巩固基础知识。
摘要由CSDN通过智能技术生成

「Unity博主营地第一期」于2019年11月开启,现已收到数百篇原创投稿。每周根据Unity Connect社区反馈,帮助大家发现最优质、最干货、最受欢迎的博文作品。

众所周知,在 Unity3D 引擎中,最常用的语言便是 C#(C Sharp)。俗话说水质积不厚,则无力负大舟,所以,打牢基础是走向Unity神坛的第一步。

因此,博主anime king为各位汇集了一些常用基础代码,方便后续快速学习、使用。

01

DateTime 数字类型,DateTime 是一个包含日期、时间的类型,此类型通过 ToString() 转换为字符串时,可根据传入给 Tostring() 的参数转换为多种字符串格式。

System.DateTime currentTime=new System.DateTime();

  • 取当前年月日时分秒:

    currentTime=System.DateTime.Now;

  • 取当前年:int 年=currentTime.Year;

  • 取当前月:int 月=currentTime.Month;

  • 取当前日:int 日=currentTime.Day;

  • 取当前时:int 时=currentTime.Hour;

  • 取当前分:int 分=currentTime.Minute;

  • 取当前秒:int 秒=currentTime.Second;

  • 取当前毫秒:int 毫秒=currentTime.Millisecond;(变量可用中文)

  • 取中文日期显示——年月日时分 :

    string strY=currentTime.ToString("f"); //不显示秒

  • 取中文日期显示_年月 :

    string strYM=currentTime.ToString("y");

  • 取中文日期显示_月日 :

    string strMD=currentTime.ToString("m");

  •  取中文年月日:

    string strYMD=currentTime.ToString("D");

  • 取当前时分,格式为:(14:24) :

    string strT=currentTime.ToString("t");

  • 取当前时间,格式为:2003-09-23T14:46:48:

    string strT=currentTime.ToString("s");

  • 取当前时间,格式为:2003-09-2314:48:30Z :

    string strT=currentTime.ToString("u");

  • 取当前时间,格式为:2003-09-2314:48 :

    string strT=currentTime.ToString("g");

  • 取当前时间,格式为:Tue,23 Sep 2003 14:52:40 GMT :

    string strT=currentTime.ToString("r");

  • 获得当前时间n 天后的日期时间:

    DateTime newDay = DateTime.Now.AddDays(100);

1e221963b51de161da59b1c5656062d1.png

02

其他类型字符串转换  变量.ToString()。

12345.ToString("n"); //生成 12,345.00

12345.ToString("C"); //生成 ¥12,345.00

12345.ToString("e");//生成 1.234500e+004

12345.ToString("f4"); //生成 12345.0000

12345.ToString("x"); //生成 3039 (16进制)

12345.ToString("p"); //生成 1,234,500.00%

03

字符型转换转为 32 位数字型。

Int32.Parse(变量) Int32.Parse("常量")
Int32.Parse("123");//生成 123

04

变量.Length 数字型。取字串长度:如:string str="中国";

int Len = str.Length ; //Len是自定义变量, str是求测的字串的变量名

05

System.Text.Encoding.Default.GetBytes(变量):字码转换转为比特码

byte[]bytStr = System.Text.Encoding.Default.GetBytes(str);
然后可得到比特长度:len = bytStr.Length;

06

System.Text.StringBuilder("")- 字符串相加,(+号是不是也一样?) 。

System.Text.StringBuilder sb = new System.Text.StringBuilder("");
sb.Append("中华");
sb.Append("人民");
sb.Append("共和国");

07

变量.Substring(参数1,参数2):截取字串的一部分,参数1为左起始位数,参数2为截取几位。

strings1 = str.Substring(0,2);

08

char.IsWhiteSpce(字串变量,位数)——逻辑型 :查指定位置是否空字符。

string str="你好 AnimeKing";char.IsWhiteSpace(str,2); //结果为:True, 第一个字符是0位,2是第三个字符。

09

char.IsPunctuation('字符') ——逻辑型:查字符是否是标点符号。

char.IsPunctuation('A');//返回:False

10

(int)'字符' :把字符转为数字,查代码点,注意是单引号。

(int)'A'; //结果为A字的代码:20013

11

(char)代码 :把数字转为字符,查代码代表的字符。

(char)22269; //返回“国”字。

12

清除字串前后空格 :变量.Trim() 。

13 

字串替换 :字串变量.Replace("子字串","替换为")。

string str="中国";
str=str.Replace("国","央"); //将国字换为央字
Response.Write(str); //输出结果为“中央”

14

字串对比一般都用: if(str1==str2){ }  ,并且也有别的方法。

(1) string str1; str2//语法:str1.EndsWith(str2); __检测字串str1是否以字串str2结尾,返回布尔值.如:if(str1.EndsWith(str2)){ Response.Write("字串str1是以"+str2+"结束的"); }
(2) //语法:str1.Equals(str2);__检测字串str1是否与字串str2相等,返回布尔值,用法同上
(3) //语法Equals(str1,str2); __检测字串str1是否与字串str2相等,返回布尔值,用法同上

15

IndexOf()、LastIndexOf():查找字串中指定字符或字串首次(最后一次)出现的位置,返回索引值。

str1.IndexOf("字");//查找“字”在str1中的索引值(位置)
str1.IndexOf("字串");//查找“字串”的第一个字符在str1中的索引值(位置)
str1.IndexOf("字串",3,2);//从str1第4个字符起,查找2个字符,查找“字串”的第一个字符在str1中的索引值(位置)

16

Insert()在字串中指定索引位插入指定字符。

str1.Insert(1,"字");在str1的第二个字符处插入“字”,如果str1="中国",插入后为“中字国”;

17

PadLeft()、PadRight() :在字串左(或右)加空格或指定char字符,使字串达到指定长度。

string str1="中国人";
str1=str1.PadLeft(10,'1'); //无第二参数为加空格 ,结果为“1111111中国人” , 字串长为10

18

Remove():从指定位置开始删除指定数的字符 。

string str1="我是萨达姆的崇拜者之一";
str1.Remove(5,4); //结果为“我是萨达姆之一”

19

判断是否存在文件夹,没有则创建。

if (Directory.Exists(url) == false)
{
Directory.CreateDirectory(url);
}

20

方法中的参数,返回值

ref 型参数:该种类型的参数传递变量地址给方法(引用传递),传递前变量必须初始化。

该类型与out型的区别在于:

  • ref 型传递变量前,变量必须初始化,否则编译器会报错, 而 out 型则不需要初始化。

  • ref 型传递变量,数值可以传入方法中,而 out 型无法将数据传入方法中。换而言之,ref 型有进有出,out 型只出不进。

out 型参数:与 ref 型类似,仅用于传回结果。

注意:

  • out 型数据在方法中必须要赋值,否则编译器会报错。

    如:如下若将代码中的 sum 1 方法的方法体

    改为 a+=b ; 则编译器会报错。原因:out 型只出不进,在没给 a 赋值前是不能使用的

    改为 b+=b+2 ; 编译器也会报错。原因:out 型数据在方法中必须要赋值。

  • 重载方法时若两个方法的区别仅限于一个参数类型为 ref 另一个方法中为 out ,编译器会报错

    如:若将下面的代码中将方法名 vsum1 改为 sum(或者将方法名 sum 改为 sum1),编译器会报错。

    Error 1 Cannot define overloaded method ‘sum’ because it differs from another method only on ref and out

    原因:参数类型区别仅限于 为 ref 与为 out 时,若重载对编译器而言两者的元数据表示完全相同。

classC
{//1. in型参数publicvoidsum(int a, int b) {
a += b;
}//2. ref型参数publicvoidsum(refint a, int b){
a += b;
}//3. out型参数publicvoidsum1(outint a, int b){
a = b+2;
}publicstaticvoidMain(string[] args){
C c = new C();int a = 1, b = 2;
c.sum(a,b);
Console.WriteLine("a:{0}", a);
a = 1; b = 2;
c.sum(ref a, b);
Console.WriteLine("ref a:{0}", a);
a = 1; b = 2;
c.sum1(out a, b);
Console.WriteLine("out a:{0}", a);
}
}

以上

 C# 常用基础代码就汇总到这里,感谢博主整理总结。

7187600462634ab37fa1fbdea488646f.png

不过,看到这里,相信有一些开发者会不以为意「这也忒简单了吧!」但有一些可能会感叹「这也太实用了吧!」。

Unity Connect社区就是这样一个极富包容性的平台,不管你是萌新还是老司机,社区「博主营地」活动鼓励每个人记录下自己当前的学习收获与心得。因此,不管你处在学习Unity的哪个阶段,总能在此找到符合需求的内容。

so, 认为「这也忒简单了吧!」的开发者,欢迎你把文章砸来0d3559aba36c6a0346425f74d64332ed.png

12963f31c5617b51981b188c6e4243d6.png

推荐阅读

Unity博主营地|免费动画角色哪里找?这个秘密武器分享给你

Unity博主营地|建议收藏!游戏开发素材资源渠道合集

Unity博主营地|Unity常用插件汇总

Unity博主营地|建议收藏!游戏开发素材资源渠道合集

为何说2020年是AR/VR技术的转型之年?15位行业专家为你解读

拳头游戏官宣!《英雄联盟》系列新作使用Unity引擎驱动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值