asp.net(一)——c#基础

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29423883/article/details/78620900

C#基础

1.注释:单行// 多行// 方法///

2.访问修饰符
public:成员可以从任何代码访问。
protected:成员只能从派生类访问。
internal:成员只能从同一程序集的内部访问。
protected internal:成员从同一程序集内部或者派生类访问。
private:成员只能在当前类的内部访问。

3.数据类型
值类型(Value types)
c#中有无符号类型,如uint
bool 布尔值
int 32 位有符号整数类型
long 64 位有符号整数类型
byte 8 位无符号整数
float 32 位单精度浮点型
….
enum 枚举
如 enum Days{Monday,Tuesday}
如果强转成int会从0开始,通过赋值可改变数值如enum Days{Monday=1,Tuesday=2}可以配合switch使用
默认是对应int型的,可改变如enum Days:short{Monday,Tuesday}
struct 结构 自定义类型(底层都是struct)如果使用使用class则所有实例都存储在堆栈上

(注,可以直接用值类型调用方法,存储在栈内存上)

引用类型(Reference types)
object 所有类型的基类
string
用==比较,(运算符重载)
s[1],根据下标获取某一个字符
加上@之后,不会进行转义如 String s=@”c:\aa.txt”; 等价于 s=”c:\aa.txt”
StringBuilder AppendFormat(“hello{0}{1}”,”word”,”!!!!”);第一个参数是格式,{0}传参,后面是参数

dynamic(类型检查在运行阶段)
指针类型(Pointer types)

类型推断:使用var 关键字,编译器可以推断出类型
可为空类型
int? isnu=100;等价于System.Nullable isnu=100;

3.表达式

4.流程控制
跳转语句 goto 标识符,跳转到程序中用标签指定的另一行
goto labell;

labell:

循环 foreach 用in代替java的:如
foreach(var tem in array){…}
跳出循环:break;
跳过一次循环:continue

5.关键字
abstract是关键字
@abstract 标识符

6.对象和类型
属性
public int Age{
get{return age+10};
set;
}
实体类中的属性直接写成

 public int Age{get;set;}

常量声明使用const关键字相当于java的static final
public const string One=”1”
传参—默认都是通过值传递,即传递一个变量的副本,方法退出后,对变量的修改会丢失。
使用ref关键字,可以强制使用引用传递如 ,但是所有的引用都需要初始化值
void fun(ref int i){
i=10;
}
这样会影响原来的值
*使用out 关键字,这样可以不用初始化,调用方法时,可以返回多个值
只读字段 readonly
get set方法 public string name{get;set}

7.关于System.Object的一些方法
ToString() 将对象转化为字符串

8.继承
使用: 表示继承extends
把一个基类函数声明为virtual,就可以重写了.字段也可以,虚方法
public class MyC : MyA,MyB{
}
base关键字对应–java的super
抽象类 abstract 可以被继承
终类:使用sealed关键字,—–类似java的final
与java一样单继承,多实现
接口与java一样

  抽象类:abstract关键字
  接口: interface(不能有字段,所有的方法都是抽象的)
 如果是继承实现抽象的方法加上override关键字 
 public override int geti(){
        return 2;
    }
 如果是实现接口,实现接口中的方法,不用加该关键字

9.异常
C# 中的异常类主要是直接或间接地派生于 System.Exception
用户自定义的异常类是派生自 ApplicationException 类

10.类型转换。关于强转,如果是引用或非空类型可以使用as关键字如
int—string i.ToString();
string—int Convert.ToInt32(“100”)或Int32.Parse(“100”);或者int n; bool s=Int32TryParse(“100”,out n);会返回布尔型,转换蔡成功n=100,s=ture否则n=0,s=false
装箱—值类型转换为引用类型,int i=100; object oi=i;
拆箱- int j=(int)oi

11.集合


        链表:List ArrayLiat 
        键值对:Hashtable  m.Add("name","jock");m["name"]
               Dictionary 如果获取一个不存在的key会报错
               ConcurrentDictionary 线程安全的
                SortedList 会根据key值排序


//继承父类方法加上virtual之后,可以被重写,重写的方法加上override关键字;如果不重写,但又同名,使用new关键字。
        //如果不希望被继承,使用sealed关键字-----相当于final
        //实例化过程,与java类似
        /*
        //一维数组值
        int[] n = new int[5];
        int[] n1 = { 1,2,3,4,5};
        n[0] = 1;

        //二维数组
        string[,] n2 = new String[5, 4];
        n2[0, 0] = "1";

        //数组的数组,有一个维度长度不固定,初始化指定
        int[][] n3= new int[2][];
        int[][] n4 = { new int[] { 1, 2, 4 }, new int[] { 1, 3 } };
        n3[0] = new int[6];
        n3[1] = new int[2];
        n3[2] = new int[4];

        n3[0][0] = 3;


        #region 3.集合
        ArrayList al = new ArrayList();
        al.Add(4);

        Hashtable m = new Hashtable();
        m.Add("name","jock");
        Console.WriteLine(m["name"]);

        Dictionary<String, String> m1 = new Dictionary<String, String>();

12.IO
、、、、、、、、、、、、、、、、、、、、、、、、



   //遍历目录
   //File 静态的方法,FileInfo需要实例化调用方法
            //文件是否存在 
            File.Exists(@"path");


            DirectoryInfo dir = new DirectoryInfo(@"F:\");
            foreach (FileInfo f in dir.GetFiles("*.exe")) {

               String n=f.Name;//文件名
                long size = f.Length;//大小
                DateTime creattime = f.CreationTime;//创建时间

                Console.WriteLine(n + ""+size);
            }
、、、、、、、、、、、、、、、、、、、、、、、
 //新建文件并写入内容
    class Program {
        private const string FILE_NAME = @"F:\a.txt";
        public static void Main(string[] args){ 
            if (File.Exists(FILE_NAME)) {
                //若存在则返回
                return;
            }
            FileStream fs = new FileStream(FILE_NAME,FileMode.Create);
            BinaryWriter w = new BinaryWriter(fs);
            w.Write("aaa");
            w.Close();
            fs.Close();
        }
    }
。。。。。。。。。。。。。。。。。。。。。。。
//向现有文件添加内容,,使用using 关键字,使用完就会释放。io读写,数据库连接时使用
  class Program {
        private const string FILE_NAME = @"F:\a.txt";
        public static void Main(string[] args){
            using (StreamWriter w=File.AppendText(FILE_NAME)) {
                log("this is a waring",w);
                w.Close();

            }
        }
        public static void log(string log,TextWriter w) {
            w.WriteLine(DateTime.Now + ":message:"+log);
            w.Flush();
        }
    }
。。。。。。。。。。。。。。。。。。。。。。。
//FileStream 读文件
   class Program {
        private const string FILE_NAME = @"F:\a.txt";
        public static void Main(string[] args){
            if (!File.Exists(FILE_NAME)){
                //若不存在则返回
                return;
            }

            FileStream fs = new FileStream(FILE_NAME, FileMode.Open,FileAccess.Read);
            BinaryReader r = new BinaryReader(fs);
            for (int i=0;i<5;i++) {
                Console.WriteLine(r.ReadString());
            }
            r.Close();
            fs.Close();

            Console.ReadKey();
        }

    }
;;;;;;;;;;;;;;;;;;;;;;;
//读文件 StreamReader 
class Program
    {
        private const string FILE_NAME = @"F:\a.txt";
        public static void Main(string[] args)
        {
            if (!File.Exists(FILE_NAME))
            {
                //若不存在则返回
                return;
            }

            using (StreamReader sr=File.OpenText(FILE_NAME)) {
                String input;
                while ((input=sr.ReadLine())!=null) {
                    Console.WriteLine(input);
                }
                sr.Close();
            }           

            Console.ReadKey();
        }
    }

///时间与日期
//DateTime 几乎可以获取时间相关的所有信息
//TimeSpan  表示时间段 可应用于时间运算
 static void DateAndTime()
        {
            ///获取当前时间2017/12/5 21:10:43
            DateTime dt = DateTime.Now;

            Console.WriteLine(dt+"b");

            ///日期格式化,参数为你想要的格式
            string d1 = dt.ToString("yyyy-mm-dd");
            Console.WriteLine(d1);

            ///获取毫秒数,只能根据当前时间-1970/01/01的毫秒时间差
            TimeSpan ts = DateTime.Now - DateTime.Parse("1970-1-1");
            long l = (long)ts.TotalMilliseconds;
            Console.WriteLine(l);
            ///
        }

展开阅读全文

没有更多推荐了,返回首页