20151026c#2
變量是內存里存儲的,運行在cpu里的。
數(shù)據(jù)類型
值類型:所有的數(shù)值類型都是值類型(short int long float double、bool)、枚舉、結構
引用類型:對象、字符串、object、數(shù)組
區(qū)別:
1、值類型
class Program{static void Main(string[] args){int i = 10;int j = i;i = 20;Console.WriteLine(j);}}所有的值類型是儲存在棧里的,
值類型的賦值就是值的拷貝
j是沒有變化的
2、引用類型
class Program{static void Main(string[] args) { string s1 = "aa"; string s2 = s1; s1 = "bb"; Console.WriteLine(s2); } }引用類的值是儲存在堆里面的,棧里面儲存的只是它的引用地址。
引用類型的賦值,實際上就是地址的拷貝
s2也是沒有變化的。
靜態(tài)成員
要去調用一個類里面的非靜態(tài)成員(字段、方法),需要通過類的一個對象調用。
1、當實例化一個類的對象,堆里面會將類里面的所有非靜態(tài)成員(變量、方法)生成
2、當實例化一個類的對象,首先會在堆里檢索該類的對象是否存在,如果在在就會重新拷貝一份。
?
class Person1{public string name = "A";public int age = 20;}class Program{static void Main(string[] args)//程序入口 {Person1 p1 = new Person1();Console.WriteLine(string.Format("年齡是{0},姓名是{1}", p1.age, p1.name));//調用對象字段 可以寫為靜態(tài)字段就可以用類調用了。 Console.ReadKey();}}
要去調用一個類里的靜態(tài)成員,只需要通過類去調用。
class Person{public static int i = 10;public static void SayHello(){Console.WriteLine("大家好");}}class Program{static void Main(string[] args){Console.WriteLine(Person.i);Person.SayHello(); Console.ReadKey();}}
比如:教室類??同學對象
使用某個同學的文具盒就需要通過對象調用
使用教室里公共的工具 拖把、掃帚?就通過為可以調用
?
?未將對象引用到對象的實例
Person p1=null;
引用p1.age p1.name就會出現(xiàn)該錯誤 需要判斷對象是否為空 調試時要查看對象為什么為空
盡可能的避免裝箱拆箱 (蘋果-蘋果? 蘋果-打包-拆包-蘋果)
裝箱
把值類型變?yōu)橐妙愋?/p>
int i1 = 10;
string s3 = i1.ToString();
拆箱
把引用類型變?yōu)橹殿愋?/p>
string s4 = "10";
int i2 = Convert.ToInt32(s4);
?
成員變量(全局變量):寫在類的里面,方法的外面
局部變量 寫在方法的里面
靜態(tài)變量 static
?
數(shù)據(jù)類型轉換
隱式轉換 低精度轉高精度型
int i=10;
double d=Convert.ToDouble(i);
顯示式轉換 高精度型轉低精度型(數(shù)據(jù)會損耗)
double d=10.45;
int i=Conver.ToInt32(d);
運算符
算術運算符:和JS相同 +-*/% ++ --
賦值運算符:= += -= /= *= %= ??
?: js
int i5 = 2 > 3 ? 10 : 20; 2>3嗎,如果成立取值10 不成立 取20
??
a=b??c b等于空嗎?等于a=c 不等于a=b
string s5 = null;
string s6 = "aaa";
string s7=s5??s6; s5等于空嗎?如果不等于取值s5 如果等于取值s6
關系運算符 == !== < > <= >=
邏輯運算符 ||或? ?&&與? !非(取反)
String類
定義特點
1、字符的數(shù)組
把一個字符串轉化為字符的數(shù)組,并打印
string s = "dfdfdf";char[] a = s.ToCharArray();for (int i = 0; i < a.Length; i++){Console.WriteLine(a[i]);}2.獲取字符的長度 str.length;
3、字符串一創(chuàng)建,就不能被修改,重新獲取時會在堆里創(chuàng)建一個。
4、s2=s1時,會在堆里拷貝一份。
方法
Compare方法
字符串對應ascii碼的順序
Console.WriteLine(string.Compare("a","bbbbb"));1
Equals 判斷是否相等
Console.WriteLine(string.Equals("aa","aa"));
StartWith/EndWith判斷一個字符串是否以一個字符串開頭 結尾 返回值true/false
string s = "aabbcc";
Console.WriteLine(s.StartsWith("aabb")); 返回true
indexOf/LastindexOf某個指定字符或字符串第一次(最后一次)出現(xiàn)的位置索引
string s = "aabbcc";
Console.WriteLine(s.IndexOf("d")); 返回-1
Console.WriteLine(s.IndexOf("b")); 返回索引2
SubSrting截取字符串
string s = "aabbcc";
Console.WriteLine(s.Substring(3));返回bbc
Console.WriteLine(s.Substring(3,1));返回b
insert 插入字符
string s = "aabbcc";
Console.WriteLine(s.Insert(3,"1"));返回aab1bcc
padleft padright? 補齊字符串
?string s = "aabbcc";
?Console.WriteLine(s.PadLeft(10,'@'));返回@@@@aabbcc
Remove方法 刪除和剪切字符串
string s = "aabbcc";
Console.WriteLine(s.Remove(1,1));返回abbcc 開始刪除的位置,刪除的數(shù)量
Trim去掉前后的空格
string s = " aabbcc ";
Console.WriteLine(s.Trim());返回aabbcc
去掉數(shù)組里的某個字符
Char[] str1 = {' ', '@', '#', '$' }; //必須要加空格
string str0="@#$ "; //必須要加空格
string str2 = " @China$# ";
string str3 = str2.Trim(str1);
string str4 = str2.Trim(str0.ToCharArray());
Console.WriteLine(str3);//返回China
Console.WriteLine(str4);//返回China
?
TrimSart去掉前面的空格?TrimEnd? 去掉后面的空格
string str1 = "? dfdf ";
Console.WriteLine(str1.TrimStart());返回 dfdf空格?
Console.WriteLine(str1.TrimEnd());返回 空格dfdf
CopyTo方法 復制字符串
string str1 = "dfdf";
char[] str2 = new char[100];
str1.CopyTo(1, str2, 0, 3);//str1[1] ?str2? str2[0] str2[3]
Console.WriteLine(str2);//返回fdf
Replace 替換字符串
Console.WriteLine(("dfdfd").Replace("d","1").Replace("1","2"));返回22d
Format把一個內容傳到字符串里
Console.WriteLine(string.Format("'{0}'","abc")); 返回'abc'
?
Console是System下面的一個類
WriteLine是Console類下面的一個方法
當一個類是靜態(tài)的,所有的內容都是靜態(tài)的
?
轉載于:https://www.cnblogs.com/16lily521/p/4929508.html
總結
以上是生活随笔為你收集整理的20151026c#2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SFB2015 多SIP域
- 下一篇: SegmentFault 创始人祁宁对话