C# 核心基础(1) 持续更新

using System;

namespace ConsoleApplicationCShape
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello Wrox.");
            Console.ReadLine();
            return;
        }
    }
}

变量初始化

int i = 1;
bool mBool = false;
int x = 12, y = 12;

类型推断关键字 var

            var name = "Aaron";
            var age = 12;
            var isRabbit = false;

            Type nameType = name.GetType();
            Type ageType = age.GetType();
            Type isRabbitType = isRabbit.GetType();

            Console.WriteLine("name is type " + nameType.ToString());
            Console.WriteLine("age is type " + ageType.ToString());
            Console.WriteLine("isRabbit is type " + isRabbitType.ToString());
            Console.ReadLine();

输出

name is type System.String
age is type System.Int32
isRabbit is type System.Boolean
  • 变量必须初始化。否则,编译器就没有推断变量类型依据
  • 初始化器不能为空。
  • 初始化必须放在表达式中。
  • 不能把初始化器设置为一个对象,除非在初始化器中创建一个新对象。

一旦声明了变量,推断出了类型,不能改变变量类型。

变量作用域

  • 只要类在某个作用域内,其字段也在该作用域内。
  • 局部变量存在于声明该变量的语句块或方法结束的右花括号之前的作用域内。
  • 在for、while或类似语句中声明的局部变量存在于该循环体内。
局部作用域冲突

 只要变量的作用域是程序的不同部分,就不会有问题,也不会产生多义性。注意,同名局部变量不能再同一作用域内声明两次。

int j = 0;
for (int i = 0; i < 10; i++)
{
    int j = 0;
    Console.WriteLine(i + j);
}
for (int i = 0; i < 10; i++)
{
    int j = 0;
    Console.WriteLine(i + j);
}

for (int i = 0; i < 10; i++)
{
    int j = 0;
    Console.WriteLine(i + " " + j);
}

字段和局部变量的作用域冲突

字段 (静态变量)

static int j = 20

局部变量

int j = 30
static int j = 20;
static void Main(string[] args)
{
    int j = 30;
    Console.WriteLine(j);
    Console.WriteLine(Program.j);
    Console.ReadLine();
}

常量

  • 常量必须声明时初始化。执行值后,就不能再改写了。
  • 常量的值必须能在编译时用于计算。因此,不能从一个变量中提取的值用来初始化常量。(如果一定要这样做,可以用 readonly 只读)
  • 常量总是静态的,所以不能常量声明中包含修饰符 static
const int j = 20;

预定义数据类型

值类型和引用类型

C#数据类型分为  值类型 和 引用类型

值类型直接存储其值,引用类型存储对值得引用。

值类型存储在堆栈中,引用类型存储在托管堆上。

值类型

int x = 20;
int j = 30;

引用类型

Vector x, y;
x = new Vector();
x.X = 30;
Console.WriteLine(x);
y = x;
y.X = 30;
Console.WriteLine(y);
Console.WriteLine(x);

输出

30,0
30,0
30,0

注意 我这里 Vector 只有在 System.Windows.WindowsBase 命名空间中,大家要测试引用类型时,需创建WPF程序。

要创建对象,须使用new 关键字。因为 x 和 y 引用同一对象,所以修改 x,也会影响 y 。当然值类型是不会有影响的。

CTS类型

C# 有15个预定定义类型,其中13个是值类型,2个引用类型(string 和 object)

8个整数类型 sbyte、short、int、long、byte、ushort、uint、ulong

2个浮点类型 float、double

1个高精度浮点数 128位  decimal

1个布尔类型 bool

1个单字符类型 char

2个预定义引用类型 object、string

声明 decimal

decimal d = 12.30M;

声明 char

char c = ‘x‘;

声明 string

string str = "Hello world";

转义字符

string str1 = "C:\\Program Files (x86)\\ADSafe";
string str2 = @"C:\Program Files (x86)\ADSafe";

甚至包含换行符

string str2 = @"C:\Program Files (x86)
\ADSafe";
            Console.WriteLine(str2);

流控制

if

int intInput = Int32.Parse(Console.ReadLine());

if (intInput == 10)
{
    Console.WriteLine("Input 10");
}else if (intInput == 20)
{
    Console.WriteLine("Input 20");
}
else
{
    Console.WriteLine("Input Error");
}
Console.ReadLine();

如果条件分支只有一条语句,就无须使用花括号:

if (intInput == 10)
    Console.WriteLine("Input 10");

switch

while (true)
{
    int intInput = Int32.Parse(Console.ReadLine());
    switch (intInput)
    {
        case 0:
        case 10:
            Console.WriteLine("Input 10");
            break;
        case 20:
            Console.WriteLine("Input 20");
            goto case 30;
            break;
        case 30:
            Console.WriteLine("Input 30");
            break;
        default:
            Console.WriteLine("Input Error");
            break;
    }
}

break   结束当前循环

continue   退出当前迭代,进行下一轮迭代

循环

for

for (int i = 0; i < 10; i++)
{
    Console.WriteLine(i);
}

i++       ==>      i = i + 1    ==>   i += 1

while

int i = 0;
while (i < 10)
{
    i++;
    Console.WriteLine(i);
}

do while

int i = 100;
do
{
    i++;
    Console.WriteLine(i);
} while (i < 10);

foreach

int[] arr = new int[6] {1,2,3,4,5,6};
foreach (int value in arr)
{
    Console.WriteLine(value);
}

跳转语句  goto、break、continue、return

枚举

public enum TimeOfDay
{
    Morning = 0,
    Afternoon = 1,
    Evening = 2
}

 

时间: 2024-10-06 00:12:25

C# 核心基础(1) 持续更新的相关文章

linxu基础命令--持续更新

服务管理 systemctl redhat7 systemctl start foo.service 启动服务 systemctl restart foo.service 重启服务 systemctl stop foo.service 停止服务 systemctl reload foo.service 不重启服务下重新加载配置文件 systemctl status foo.service 查看服务状态 systemctl enable foo.service 设置服务开机自动启 systemct

centos7基础(持续更新)

一.linux文件权限详解 读(read),写(write),执行r(recute)简写即为(r,w,x),亦可用数字来(4,2,1)表示 举例:如果某文件权限为7则代表可读.可写.可执行(4+2+1).若权限为6(4+2)则代表可读.可写.权限为5代表可读(4)和可执行(1).权限为3代表可写(2)和可执行(1). 下图中文件所有者(属主)为root,所有组(属组)为root,文件名为install.log,权限为的第一个减号“-”代表的是文件类型:-:普通文件,d:目录文件,l:链接文件,b

MVC基础知识-持续更新....

1.如何在自动生成的视图中显示需要的字段名称: 在相应的定义字段中添加Display,例如: [Display(Name = "用户名:")] public string UserName { get; set; }

java基础必备&lt;持续更新优化&gt;

java的程序分有2类:     1.嵌入在网页中,通过浏览器运行的程序,被称为Applet,译为小应用程序. 2.除1之外Java程序,被称为Application,译为应用程序. 第一个java Applet程序: 文件名firstApplet.java import java.applet.*;import java.awt.*;  // import关键字表示要引入某个包 // extends Applet表示继承Applet类 // 程序没有main()方法,取而代之是paint()方

Linux 基础命令 持续更新中...

1.ls 显示当前文件/文件夹 显示文件大小: ls -lh  显示隐藏文件: ls -a 显示文件详细信息: ls -l (ll)2.pwd 显示当前所在路径 cat 显示当前文件下所有内容3.cd  cd - 回到上次工作的目录 cd ~ 回到家目录 cd 盘符 跳转到指定盘符下4.文件操作: 创建文件: touch 文件 名---touch 123.txt 创建目录(文件夹):mkdir mkdir test  删除目录(文件夹):rmdir rmdir test 删除文件:rm -r 递

C++ 基础知识汇总 持续更新

摘录一些C++面试常考问题,写一些自己的理解,欢迎来摘果子. static关键字 用于声明静态对象: 静态函数只在本文件可见.(默认是extern的) 全局静态对象:全局静态对象,存储在全局/静态区,作用域整个程序,在程序结束才销毁: 局部静态对象:在函数内部加上static声明的变量,在首次调用时初始化,然后一直驻留在内存,作用域是该函数,可用于函数调用计数(primary有例子),程序结束释放: 静态数据成员:归属于类,类对象共享,类外初始化,类对象可访问: 静态函数成员:归属于类,只能访问

【 js 基础 】【 源码学习 】源码设计 (持续更新)

学习源码,除了学习对一些方法的更加聪明的代码实现,同时也要学习源码的设计,把握整体的架构.(推荐对源码有一定熟悉了之后,再看这篇文章) 目录结构:第一部分:zepto 设计分析第二部分:underscore 设计分析 第一部分: zepto 设计分析zepto 是一个轻量级的 Javascript 库.相对于 jquery 来说在 size 上更加小,主要是定位于移动设备.它是非常好的学习源码的入门级 javascript 库.这里重点说一下,这个库的设计,而对于详细的源码学习大家可以 star

Java基础知识汇总(持续更新)

持续更新算是给自己立个flag,截图来自内部课程,内容很杂,后续整理归类... Mobile apple;apple = new Mobile("Apple","iPhone Xs Max",8499); 创建对象后,相当于在内存中保存了对象的地址,通过对象的地址找到对象的本身,从而找到相关的属性 成员变量默认初始值: 编码规范:包:全小写,名词.公司.团队组织名域名的反写:类名:名词或名词性短语,首字母大写,多个单词首字母均大写:接口:等同于类:方法:动词或动宾短

[转帖]linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习)

https://www.cnblogs.com/caozy/p/9261224.html 总结的挺好的 我之前想总结 一直懒 这次国庆加班 也本来计划来着 感冒了 作罢 .. 作者:蓝藻(罗蓝国度) 创建时间:2018.7.3编辑时间:2019.7.16 前言 本文特点 授之以渔:了解命令学习方法.用途:不再死记硬背,拒绝漫无目的: 准确无误:所有命令执行通过(环境为centos7),拒绝复制粘贴: 实用性高:命令多为实际工作中用到的,实例讲解,拒绝纯理论: 条理清晰:分类归纳,快速找到想要的命