C#概念总结(一)
1、C#程序的框架问题
首先是命名的空间申明 (NameSpace delclaration)
一个 ClASS
class 方法
class属性
一个main 的方法
语句(Statement) & 表达式(Expression)以及注释
下面的一简单的程序
using System;
namespace HelloWorldApplication
{
class HelloWorld
{
static void Main(string[] args)
{
/* 我的第一个 C# 程序*/
Console.WriteLine("Hello World");
Console.ReadKey();
}
}
}
namespace 声明 是一系列的类
程序第一行using System ; using 关键字用于在在程序中的包含system命名空间,一个程序一般有、多个using语句, WriteLine是定义在system中的Console的一个方法,意思是在屏幕上显示输出
Console.ReadKey();是针对VS.NET用户,是的程序员等待一个按键的动作,防止visualstudio执行的时候屏幕会快速的关闭。
C#时代码大小写敏感的 与java不同的是,文件名可以和类名不相同。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace RectangleApplication
{
class Program
{
static void Main(string[] args)
{
Rectangle r = new Rectangle();
r.Getdetails();
r.Display();
Console.ReadLine();
J.Seize();
jiSuan J = new jiSuan();
}
}
class Rectangle
{
//先声明Rectangle的属性
double length;
double width;
public void Getdetails()
{
length = 23.2;
width = 2.34;
}
public double GetArea()
{
return length * width;
}
public void Display()
{
Console.WriteLine("Length:的长度", length);
Console.WriteLine("Width:的长度", width);
Console.WriteLine("Area:的面积", GetArea());
}
}
class jiSuan{
public void Seize(){
Console.WriteLine("Size of int ",sizeof(int ));
Console.ReadLine();
}
}
}
2、引用类型(refernece types )引用类型不包含存储在变量中的实际数据,但是他们包含对变量的实际引用。他们只一个内存地址,使用多个变量时,引用变量类型可以指向一个内存地址,
如果内存位置的数据是由一个变量改变的,其他变量会自动反应这种变换,内置的引用类型有 object,dynamic ,string
声明动态类型 Dynamic :课可以存储任何类型的值在动态数据类型当中,这些变量的类型检查是在运行的时候进行检查。
声明动态类型的语法格式:
dynamic <variable_name>=Value; 列如: dynamic d=232;
这里注意的是; 对象类型的变量检查实在编译的时候进行,而动态类型的变量检查实在运行的时候进行。
附:这里有一个特殊的符号 @
例如: String str=@"C:\windows"; 等价于 String str="C:\\Windows";
3、C#变量的使用
一个变量的只不过是一个程序操作存储区的名字。变量的类型定义了存储区的大小和布局,一定范围内的数据可以存储在内存中。 可以对变量进行一系列的操作。
输出的时可以使用占位符进行输出的 :
假如是三个变量现在进行输出
int a=12; int b=23; int c=a+b;
Console.WriteLine("a={0},b={1},c={2}",a,b,c); 这样就可以输出了 哈哈哈
Systyem命名空间中的Console类提供了一个函数Readline(),用于接受用户的输入,并把它保存到一个变量中。列如: int num; num=Convert.ToInt32(Console.ReadLine());
函数Convert.ToInt32()把用户输入的数据转换成int数据类型。这是因为Console.ReadLine()只接受字符串格式的数据。
4、C#中Lvalues和Rvalues : lvalues表达式可以出现在赋值语句的左边和右边,但是rvarlues 表达式只能出现在赋值语句的右边,不能出现在左边。
常量是固定的值,出现执行的时候不会发生变换,常量可以是任何基本的数据类型,比如证书常量,字符常量或者字符串常量,还有枚举类型的常量。 常量是可以被当做常规的变量的,只是他们的值在定义后不能再做改变。
5、c#常量定义的声明: 使用const关键字类定义,定义一个常量的语法如下:
const<data_type><constant_name>=value;
6、C#运算符的介:
sizeof() 返回数据的类型大小 sizeof(int ) 返回数据的带下是4
typeof()返回class 类型的 typeod(StreamRader)
& 取地址运算符,&a 讲得到的变量的实际地址
* 变量的指针 *a 将指向一个变量
as 强制转换,即便是转换时被也不会持续按错误。 Object obj =new StringReader("Hello"); StringReader r=obj as StringReader;
实际操作的一下代码。我这里并没有做详细整理。附录在下面:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Ceshi
{
class Program
{
static void Main(string[] args)
{
int a = 1;
int b;
b = 23;
b = a++;
Console.WriteLine("a={0}", a);
Console.WriteLine("b={0}", b);
Console.ReadLine();
//++a 先自行进行增加运算在进行赋值。
a = 1;//初始化一下a的值
b = ++a;
Console.WriteLine("a={0}", a);
Console.WriteLine("b={0}", b);
Console.WriteLine("回车进行输出");
Console.ReadLine();
//a-- 先进性赋值运算再进行自减运算
a = 1;
b = a--;
Console.WriteLine("a={0}", a);
Console.WriteLine("b={0}", b);
Console.ReadLine();
//--a先进性自减运算,再赋值
a = 1;
b = --a;
Console.WriteLine("a={0}", a);
Console.WriteLine("b={0}", b);
Console.ReadLine();
//这是函数自增自减运算以及赋值的同时进行赋值运算。
//这里进行楼楼机判断的
a = 2;
b = 23;
if (a == b)
{
Console.WriteLine("line a=b ");
}
else
{
Console.WriteLine("line a 不等于 b");
}
if (a < b)
{
Console.WriteLine("a 小于 b");
}
else
{
Console.WriteLine("line a 不小于b");
}
if (a > b)
{
Console.WriteLine("line a大于b ");
}
else
{
Console.WriteLine(" a 不大于 b");
}
Console.ReadKey();
//下面进行逻辑判断的输出 C#的逻辑运算符的使用做一个实例的简单介绍
//首先声明一下两个变量的逻辑的初始值
/* bool a = false;
bool b = true;*/
//大家可以看到这行代码出现了问题, 就是因为之前已经进行了声明变量
test t = new test();
t.srt();
weiYunsuan G = new weiYunsuan();
G.set();
Yunsuan Y = new Yunsuan();
Y.yusuan();
QianzhiZhuanhuan Z = new QianzhiZhuanhuan();
Z.zhuanhuan();
}
}
class test
{
public void srt()
{
bool a = false;
bool b = true;
if (a && b)
{
Console.WriteLine("line a条件为真");
}
Console.ReadKey();
if (a || b)
{
Console.WriteLine("line a条件为真");
}
Console.ReadKey();
if (a & b)
{
Console.WriteLine("line a 的值为不知道");
}
Console.ReadKey();
if (!(a && b))
{
Console.WriteLine("line a的值为真");
} Console.ReadKey();
}
}
class weiYunsuan
{
int a = 43;
int b = 34;
int c = 0;
public void set()
{
c = a % b;
Console.WriteLine("line 1 -c 的值{0}", c);
c = a | b;
Console.WriteLine("line 2 -c 的值{0}", c);
c = a ^ b;
Console.WriteLine("line 3 -c 的值{0}", c);
c = ~a;
Console.WriteLine("line 4 -c 的值{0}", c);
c = a << 2;
Console.WriteLine("line 5-c 的值{0}", c);
c = a >> 2;
Console.WriteLine("line 6 -c 的值{0}", c);
Console.ReadKey();
}
}
class Yunsuan
{
public void yusuan()
{
int a = 23;
int c;
c = a;
Console.WriteLine("a:{0} ,c:{1}", a, c);
c += a;
Console.WriteLine("a:{0},c:{1}", a, c);
c += a;
Console.WriteLine("a:{0},c:{1}", a, c);
c -= a;
Console.WriteLine("a:{0},c:{1}", a, c);
c /= a;
Console.WriteLine("a:{0},c:{1}", a, c);
c = 89;
Console.WriteLine("a:{0},c:{1}", a, c);
c %= a;
Console.WriteLine("a:{0},c:{1}", a, c);
c <<= 2;
Console.WriteLine("a:{0},c:{1}", a, c);
c >>= 2;
Console.WriteLine("a:{0},c:{1}", a, c);
c %= 2;
Console.WriteLine("a:{0},c:{1}", a, c);
c ^= 2;
Console.WriteLine("a:{0},c:{1}", a, c);
c |= 2;
Console.WriteLine("a:{0},c:{1}", a, c);
Console.ReadKey();
}
}
class QianzhiZhuanhuan
{
public void zhuanhuan()
{
int a, b;
a = 12;
b = (a == 1) ? 23 : 4;
Console.WriteLine("b的值是{0}", b);
Console.ReadKey();
}
}
}
7、c#判断 判断结构要求程序员制定一个或者多个评估的条件吗,测试。以及条件的为真的时候要执行的语句( 必须的)和条件为假的时候要执行的语句(可选的)
C#循环语句: 循环的结构图如下:
这里简单说以个无限的循环
class Program{
static void Mian(String[] args){
for (;;)
{ Console.WriteLine(" hey Tian I am read" );
}}}
8、C#数组的输循环输出判断
9、C# 封装:被定义为把一个项目或多个项目封闭在一个屋里的或漏记的包中,在面向对象的设计方法论中,封装是为了防止对实现细节的访问。抽象和封装是面向对象的程序相关性。抽象允许相关信息的可视化,封装则使得开发者实现所需级别的抽象,C#封根据具体的需要,设置使用者的访问权限,并通过访问修饰符来实现。一个访问修饰符定义了一个类成员的范围和可见性。
- public:所有对象都可以访问;
- private:对象本身在对象内部可以访问;
- private 访问修饰符允许一个类将其他成员变量和成员函数其他的函数对象进行隐藏,只有同一个类中的函数可以访问他的私有成员,即使类的实例也不能访问他的私有成员变量。
- protected:只有该类对象及其子类对象可以访问(允许子类访问他的基类的成员变量和成员函数,这样有助于继承)
- internal:同一个程序集的对象可以访问;(允许一个类将其成员变量和成员函数暴露给当前程序中的其他对象和函数,换句话说,带有internal访问修饰符的任何成员可以在改成员所定义的应用程序的任何类或方法访问。)
- protected internal:访问限于当前程序集或派生自包含类的类型。
- 另外要注意的是如果一个方法白带任何的访问修饰符那么使用类成员的默认访问修饰符,就是privat
C#概念总结(一)的更多相关文章
- 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念
一.前言 DDD(领域驱动设计)的一些介绍网上资料很多,这里就不继续描述了.自己使用领域驱动设计摸滚打爬也有2年多的时间,出于对知识的总结和分享,也是对自我理解的一个公开检验,介于博客园这个平 ...
- 【Machine Learning】机器学习及其基础概念简介
机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)
集群概念介绍(一)) 白宁超 2015年7月16日 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习 ...
- 声音分贝的概念,dBSPL.dBm,dBu,dBV,dBFS
需要做个音频的PPM表,看着一堆的音频术语真是懵了,苦苦在网上扒了几天的文档,终于有了点收获,下面关于声音的分贝做个总结. 分贝 Decibel 分贝(dB)是一个对数单位(logarithmic u ...
- js面向对象学习 - 对象概念及创建对象
原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...
- 【Linux大系】Linux的概念与体系
感谢原作者:Vamei 出处:http://www.cnblogs.com/vamei 我在这一系列文章中阐述Linux的基 本概念.Linux操作系统继承自UNIX.一个操作系统是一套控制和使用计算 ...
- KOTLIN开发语言文档(官方文档) -- 2.基本概念
网页链接:https://kotlinlang.org/docs/reference/basic-types.html 2. 基本概念 2.1. 基本类型 从可以在任何变量处理调用成员函数和属性 ...
- .NET面试题系列[5] - 垃圾回收:概念与策略
面试出现频率:经常出现,但通常不会问的十分深入.通常来说,看完我这篇文章就足够应付面试了.面试时主要考察垃圾回收的基本概念,标记-压缩算法,以及对于微软的垃圾回收模板的理解.知道什么时候需要继承IDi ...
- 《徐徐道来话Java》(1):泛型的基本概念
泛型是一种编程范式(Programming Paradigm),是为了效率和重用性产生的.由Alexander Stepanov(C++标准库主要设计师)和David Musser(伦斯勒理工学院CS ...
- 简述linux同步与异步、阻塞与非阻塞概念以及五种IO模型
1.概念剖析 相信很多从事linux后台开发工作的都接触过同步&异步.阻塞&非阻塞这样的概念,也相信都曾经产生过误解,比如认为同步就是阻塞.异步就是非阻塞,下面我们先剖析下这几个概念分 ...
随机推荐
- 浏览器通知--window.Notification
参考链接:http://blog.csdn.net/guoquanyou/article/details/51726571 Web Notifications是HTML5 的一个特性,目前我知道的有谷 ...
- 表单相关标签之form标签
表单能够包含 input 元素,比如文本字段.复选框.单选框.提交按钮等等. 表单还可以包含 menus.textarea.fieldset.legend 和 label 元素以及其它块级元素 表单用 ...
- 开源RPC Jupiter
ref https://github.com/fengjiachun/doc/tree/master/netty https://budairenqin.iteye.com/ https://blog ...
- F - Change FZU - 2277 (DFS序+线段树)
题目链接: F - Change FZU - 2277 题目大意: 题意: 给定一棵根为1, n个结点的树. 有q个操作,有两种不同的操作 (1) 1 v k x : a[v] += x, a[v ' ...
- 转:springmvc常用注解标签详解
Spring5:@Autowired注解.@Resource注解和@Service注解 - IT·达人 - 博客园--这篇顺序渐进,讲得超级好--此人博客很不错http://www.cnblogs.c ...
- ubuntu16.04配置anaconda环境
0 - 下载安装包 推荐到清华镜像下载.我选择的是Anaconda3-5.1.0-Linux-x86_64.sh. 1 - 安装Anaconda 然后切换到安装包目录,执行下面命令,期间一直按回车或者 ...
- Selenium: Trying to log in with cookies and get the errorMessage - “Can only set cookies for current domain” or "Unable to set Cookie"
from selenium import webdriver driver = webdriver.PhantomJS(executable_path='G:/OpenSources/phantomj ...
- oracle监听的动态注册和静态注册
参考资料: https://blog.csdn.net/tianlesoftware/article/details/5543166 https://www.cnblogs.com/guilingya ...
- python判断字符串是字母 数字 大小写
字符串.isalnum() 所有字符都是数字或者字母,为真返回 Ture,否则返回 False. 字符串.isalpha() 所有字符都是字母,为真返回 Ture,否则返回 False. 字符串.is ...
- golang goroutine 介绍
Goroutine 是用户态自己实现的线程,调度方式遇到IO/阻塞点方式就会让出cpu时间(其实也看编译器的实现,如果TA在代码里面插入一些yield,也是可以的. 反正现在不是抢占式的.) 不能设置 ...