C#基础速学
Posted xuqiang7
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#基础速学相关的知识,希望对你有一定的参考价值。
原文地址 https://www.cnblogs.com/younShieh/p/10945264.html
前几天在刷即刻的时候发现了一个GitHub上的项目,该项目名为“learn x in y minutes”,这个名称就很简明扼要——“y分钟学习xxx”,一看就很牛。对于这种大神级别的人物我是非常憧憬的,怀着欣喜和敬畏的心态,点下了star,然后我就把网页关了。。。不要问我为什么不趁热学习一下,毕竟众所周知,收藏就等于学会了嘛。
n天后的今天,我终于想起来有这么一个伟大的项目还躺在我的列表里,我又把它翻了出来,学习了一下该项目里的c#文档。果然不负众望,收获颇丰。正如作者所说的:
Code documentation written as code! How novel and totally my idea!
确实是很新奇的讲解方法,几百行代码就把C#的很多常用基础语法讲了个遍,而且是以代码的形式,没有长篇大论,用代码讲语法才是最直观的。但是觉得不太适合初学者,还是适合有一定基础的人,不然一句都看不懂,也没有释义,可不得在心里把作者骂个十几遍。
废话不多说,项目地址:https://github.com/adambard/learnxinyminutes-docs
这个项目里的c#代码在运行时存在一些简单的问题,我自作主张的进行了修改。修改后的代码贴在文章末尾了。
把这个文档和项目分享出来,希望能对向我一样的新手有帮助。
// 单行注释以 // 开始
/*
多行注释是这样的
*/
/// <summary>
/// XML文档注释
/// </summary>
// 声明应用用到的命名空间
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Dynamic;
using System.IO;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
// 定义作用域,将代码组织成包
namespace Learning
{
// 每个 .cs 文件至少需要包含一个和文件名相同的类
// 你可以不这么干,但是这样不好。
public class LearnCSharp
{
// 基本语法 - 如果你以前用过 Java 或 C++ 的话,可以直接跳到后文「有趣的特性」
public static void Syntax()
{
// 使用 Console.WriteLine 打印信息
Console.WriteLine("Hello World");
Console.WriteLine(
"Integer: " + 10 +
" Double: " + 3.14 +
" Boolean: " + true);
// 使用 Console.Write 打印,不带换行符号
Console.Write("Hello ");
Console.Write("World");
// 字符串 -- 和前面的基本类型不同,字符串不是值,而是引用。
// 这意味着你可以将字符串设为null。
string fooString = "\\"escape\\" quotes and add \\n (new lines) and \\t (tabs)";
Console.WriteLine(fooString);
// 你可以通过索引访问字符串的每个字符:
char charFromString = fooString[1]; // => ‘e‘
// 字符串不可修改: fooString[1] = ‘X‘ 是行不通的;
// 根据当前的locale设定比较字符串,大小写不敏感
string.Compare(fooString, "x", StringComparison.CurrentCultureIgnoreCase);
// 基于sprintf的字符串格式化
string fooFs = string.Format("Check Check, {0} {1}, {0} {1:0.0}", 1, 2);
// 日期和格式
DateTime fooDate = DateTime.Now;
Console.WriteLine(fooDate.ToString("hh:mm, dd MMM yyyy"));
///////////////////////////////////////////////////
// 数据结构
///////////////////////////////////////////////////
// 数组 - 从0开始计数
// 声明数组时需要确定数组长度
// 声明数组的格式如下:
// <datatype>[] <var name> = new <datatype>[<array size>];
int[] intArray = new int[10];
// 声明并初始化数组的其他方式:
int[] y = { 9000, 1000, 1337 };
// 访问数组的元素
Console.WriteLine("intArray @ 0: " + intArray[0]);
// 数组可以修改
intArray[1] = 1;
// 列表
// 列表比数组更常用,因为列表更灵活。
// 声明列表的格式如下:
// List<datatype> <var name> = new List<datatype>();
List<int> intList = new List<int>();
List<string> stringList = new List<string>();
List<int> z = new List<int> { 9000, 1000, 1337 }; // i
// <>用于泛型 - 参考下文
// 列表无默认值
// 访问列表元素时必须首先添加元素
intList.Add(1);
Console.WriteLine("intList @ 0: " + intList[0]);
// 其他数据结构:
// 堆栈/队列
// 字典 (哈希表的实现)
// 哈希集合
// 只读集合
// 元组 (.Net 4+)
///////////////////////////////////////
// 操作符
///////////////////////////////////////
Console.WriteLine("\\n->Operators");
int i1 = 1, i2 = 2; // 多重声明的简写形式
// 算术直截了当
Console.WriteLine(i1 + i2 - i1 * 3 / 7); // => 3
// 取余
Console.WriteLine("11%3 = " + (11 % 3)); // => 2
// 比较操作符
Console.WriteLine("3 == 2? " + (3 == 2)); // => false
Console.WriteLine("3 != 2? " + (3 != 2)); // => true
Console.WriteLine("3 > 2? " + (3 > 2)); // => true
Console.WriteLine("3 < 2? " + (3 < 2)); // => false
Console.WriteLine("2 <= 2? " + (2 <= 2)); // => true
Console.WriteLine("2 >= 2? " + (2 >= 2)); // => true
// 位操作符
/*
~ 取反
<< 左移(有符号)
>> 右移(有符号)
& 与
^ 异或
| 或
*/
// 自增、自减
int i = 0;
Console.WriteLine("\\n->Inc/Dec-rementation");
Console.WriteLine(i++); //i = 1. 事后自增
Console.WriteLine(++i); //i = 2. 事先自增
Console.WriteLine(i--); //i = 1. 事后自减
Console.WriteLine(--i); //i = 0. 事先自减
///////////////////////////////////////
// 控制结构
////////////