c#基础笔记

main()方法不能嵌套其他方法。只能new对象调用其他方法


1转义符的作用
1.string s=""ab"";---报错---    
    string s=" \"ab\" "------true--------打印出来时"ab"
     string s="\\\\"  ----打印出来 \\
2.@只对转义符有意义
     string s=@"\\\\" ----打印出来 \\\\
     string s=@"tupian\tu.jpg"----打印出图片地址

  用户输入a\nb,得出的结果是a\nb;
     转义符只针对在代码中直接写出的字符串,对于程序中读取出来的就是这个问题


2 . cast和convert数据类型转换的区别
  1.casting数据类型  ---相当于从本质上转换,强制转换, :int i=(int)s;
  2.int.Prase(变量名称)
      3.convert数据类型  ---相当于加工,改造的过程,本质没变
convert ToString() ---转换为字符串
convert ToInt32() ----转换为整型
convert Single()  ----转换为单精度浮点型
convert ToDouble() ---转换为双精度浮点型

:convert ToIn32(s2);



3 . break,continue 和 return 的区别
          break ---结束这个循环操作
    continue ---结束当前循环。继续循环下一次操作
         return ---结束这个函数,这个函数的所有内容都不在执行


4.值类型的值域
1.int的最大值和最小值
2.byte(字节,比Int范围小得多)

最大值:int.MaxValue (想知道int/byte/...中最多或者最少位数。可以用这个)
最小值:int.MinValue

5.枚举

枚举(用来限定变量的取值范围,程序处理起来更方便)___在同一个项目中都可以使用

enum Gender{值1,值2}---------------与class是同一级别
枚举的用法:Gender girl=Gender.sex;------ -例:friend girl=friend.好女; 


6.可变的参数

    1.params用在参数中可以传递多个参数        【p e 润s】  


  

static void Main(string[] args)
{


Changge("tom","lion","elephane");
}
static void Changge(params string[] animals)//加 params可以传递多个参数 
{
for(int i=0;i<animals.Length;i++)
{
Console.WriteLine(animals[i]);
}
}



    2.函数重载
  例1
public static void Changge(int age)
{
Console.WriteLine("大家好,我{0}岁了",age);
}
public static string Changge(string name) //当函数重载时,参数个数不同 或者 参数类型不相同
{
return"大家好。这个叼毛叫"+name;
}
  例2
public static void Changge(string father,string mother)
{
}
publc static void Changge(string fameliy) //当函数重载时,参数个数不同 或者 参数类型不相同
{
}

:有增长性 时。用这个
public FrmOrderBySongName()
        {
            InitializeComponent();
            dgvSongInfo.AutoGenerateColumns = false;
        }

7. char和string 类型的另类区别
 
string s="hello";
char z=s[1];
Console.WriteLine(z); //结果为h

8. string类
要区分变量名和变量指向的值得区别,程序中可以有很多字符串,然后由字符串变量指向他们,变量可以指向其他的字符串,
但是字符串本身没有变化,字符串不可变性指的是内存中的字符串不可变,而不是变量不可变。


例1
string s1="hello";
char[] chars=s1.ToCharArray(); //转换为字符
chars[0]='a';
string s2=new String(chars); //s2是一份拷贝,而s1中的字符串不会变
Console.WriteLine(s1); //s1的值为hello
Console.Write(s2); //s2的值为aello
例2
string s1="hello";
string s10=s1; //s10拷贝了一份s1.不管s1怎么改变值,s10的值都不会被改变
char[] chars=s1.ToCharArray();
chars[0]='a';
s1=new string(chars);
Console.WriteLine(s1); //s1的结果为ahello
Console.WriteLine(s10); //s10的结果为hello;

       1.string类常用函数


1.ToLower()  ---得到字符串的小写形式。
2.ToUpper()  ---得到字符串的大写形式.
3.Trim()     ---去掉字符串两端的空白,中间的空白不会去掉(例:[a   b])
4.StringComparison.OrdinalIgnoreCase:忽略大小写,而==是比较大小写,ignore:忽略 case:大小写 ordinal:排序
 

bool s=("abc"=="ABC");
bool s1="abc".equals("ABC",StringComparison.OrdinalIgnoreCase); //比较忽略后大小写的比较
5.ToCharArray() ---转换为字符,返回一个数组
6.split(params char[] separation) ---分割字符串,反返回一个数组。(separation是间隔的意思,例:string s="1,2.3;4|"; s=s.split(',','.',';','|');  输出的结果为一节一节的)
 
7.StringSplitOptions.RemoveEmptyEntries --移除空白  entries
1:
string s1="123aa,123bb,123cc,,,,123dd,123ee";

string[] s=s1.Split(new char[]{','},StringSplitOptions.RemoveEmptyEntries); entries:进入-----用多个分隔符分割时才需要用到split(new char[]{'?'})


2:也可以用字符串进行分割

string[] s=s1.Split(new string[]{"123",","},StringSplitOptions.RemoveEmptyEntries)


3:读取文件string[] lines=System.IO.File.ReadAllLines(@"c\1.txt",Encoding.Default);

          8. Replace(oldValue,newValue)----将oldValue替换为newValue :string s="我是周杰伦,周杰伦是我";s=s.Replace("周杰伦",“你爹”)  Regex.Replace(str,@"(http://[a-aA-z0-9]_\-\.&\?+)","<a href=\"$1\">$1</a>");

         9.Substring(int StartIndex); ---输出从 StartIndex 开始到这个 字符串末端
  :string local="FTTP://312.COM" local=local.Substring(7) //输出"为312.COM"  Substring(int StartIndex,int length) ---输出StartIndex开始length这个长度的字符串  
  :local=local.Substring(7,2);  //输出为"31"

        10. . bool Contains(string value) ---判断字符串是否含有子串value  
bool StartsWith(string value) ---判断字符串是否以子串value开头 
bool EndsWith(string value)   ---判断字符串是否以子串value结束 
int IndexOf(string value) ---取字符串第一次出现的位置


注意:字符串是不可变的,所以这些函数都不会直接改变字符串的内容,而是把修改后的字符串的值通过函数返回值的形式返回,
:s=s.ToLower();
1:
错误: string s="HELLO":s.ToLower();Console.WriteLine(s); //输入的结果为HELLO 

正确:string s=HELLO";s=s.ToLower(); //转换为小写Console.WriteLine(s); //s 的值为hello,   并不是改变了字符串的内容,而是重新生成了一个新的全部变为小写的字符串,  然后变量s指向这个字符串



9.. null与string.empty的区别

  null:是空引用,对于一个引用类型而言,只在栈中为其分配一小块内存,但不指向堆,压根就不知道指向哪(就像没人要的野孩子)

String.Empty :是空字符串,指向堆中某一块区域,但是这个堆中的内容是空字符串,神马内容都没有(这个孩子家里就它一个了,没有其它任何人了)



10.索引

索引的不单单索引整形。也可以是其他类型,而且索引值要一一对应。如果是string 类型的。索引限定是只读的,具体可以看里面的方法介绍


           Person p1 = new Person();
            //p1[1] = "大神";
            //Console.Write(p1[1]+p1[2]);
           
            Console.WriteLine(p1["周杰伦", 1, 2]);

        }

    class Person
    {
        private string firstName = "小明";
        private string secondName = "小黄";
        public string this[string name, int i, int j] //string是这个索引的数据类型
        {
            get
            {
                return name + j + i;
             }
            set
            {
                name = value;
            }
          
        }
        public string this[int index]
        {
            set
            {
                if (index == 1)
                {
                    firstName = value;
                }
                else
                {
                    secondName = value;
                }
            }
            get
            {
                if (index == 1)
                {
                    return firstName;
                }
                else if (index == 2)
                {
                    return secondName;
                }
                else
                {
                    throw new Exception("索引不正确!");
                }
}

11.ref与out区别
ref在传递之前必须初始化变量。out在传递之前不用初始化变量
ref可进可出,out只出不进
当将参数out进来后,会将变量进行初始化,而ref则不会


12.tryPase():尝试转换,返回值为bool类型
int.tryParse(要转换的类型的变量,out 要进行转换的变量) :tryParse(s1,out i)


13.修饰的限定范围
private:只能在本类中使用
protected:在本类中及其子类中可以使用
internal:同一命名空间(程序集)中的类可以使用
public:所有类均可使用


14.DataTime

DateTime.Parse(“出生日期”);【怕z】 将字符串转换成日期格式







15.各种格式: 货币、十进制、十六进制、指数、固定精度、常用格式、分割数字....

C或c Currency 货币格式

D或d Decimal 十进制格式(十进制整数,不要和.Net的Decimal数据类型混淆了)

E或e Exponent 指数格式

F或f Fixed point 固定精度格式

G或g General 常用格式

N或n 用逗号分割千位的数字,比如1234将会被变成1,234

P或p Percentage 百分符号格式

R或r Round-trip 圆整(只用于浮点数)保证一个数字被转化成字符串以后可以再被转回成同样的数字

X或x Hex 16进制格式

例:
        int i=12345;
        Console.WriteLine("{0:C}",i);   //货币
        Console.WriteLine("{0:D}",i);   //十进制数   


16.获取各种不同规格的日期的函数

d MM/dd/yyyy ShortDatePattern(短日期模式)

D dddd,MMMM dd,yyyy LongDatePattern(长日期模式)

F dddd,MMMM dd,yyyy HH:mm Full date and time (long date and short time)(全日期和时间模式)

F dddd,MMMM dd,yyyy HH:mm:ss FullDateTimePattern (long date and long time)(长日期和长时间)

G MM/dd/yyyy HH:mm General (short date and short time)(通用模式,短日期和短时间)

G MM/dd/yyyy HH:mm:ss General (short date and long time)(通用模式,短日期和长时间)

M,M MMMM dd MonthDayPattern(月天模式)

r,R ddd,dd MMM yyyy,HH':'mm':'ss 'GMT' RFC1123Pattern (RFC1123模式)

S yyyy-MM-dd HH:mm:ss SortableDateTimePattern (conforms to ISO 8601) using local time(使用本地时间的可排序模式)

T HH:mm ShortTimePattern (短时间模式)

T HH:mm:ss LongTimePattern(长时间模式)

U yyyy-MM-dd HH:mm:ss UniversalSortable-DateTimePattern (conforms to ISO 8601) using universal time(通用可排序模式)

U dddd,MMMM dd,yyyy,HH:mm:ss UniversalSortable-DateTimePattern(通用可排序模式)

y,Y MMMM,yyyy YearMonthPattern(年月模式)

例:

  Console.WriteLine("{0:D}",DateTime.Now);   //输出到天  

        Console.WriteLine("{0:y}",DateTime.Now);   //输出到月     

      Console.WriteLine("{0:m}",DateTime.Now);    //取出是那个月    

     Console.WriteLine("{0:T}",DateTime.Now);   // 取长时间到秒




















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值