c# flag 实例
2016-12-29 21:10:24 black_yu 阅读数 7642

下载

1.极速下载地址:
http://download.csdn.net/detail/black_yu/9724914

安装

很简单下一步到底,有打钩的都打钩即可。

启动与配置

不会自动添加快捷键,手动添加:
默认路径为C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\VCSExpress
启动后几个配置:
下一步,我们进行一些配置,让我们的软件更好用:
1.菜单栏:【工具】->【设置】->【专家设置】
2.菜单栏:【工具】->【选项】->左下角有一个显示所有设置,把它勾上,然后在【环境】-【字体和颜色】中,设置字体为Consolas,这个字体是等宽字体,对中英文标点,以及易混淆数字字母显示区分效果好。字体大小可以设置为12,默认的10有点小。
3.菜单栏:【工具】->【选项】->项目和解决方案,将总是显示解决方案勾上。
至此,基本配置就完成了,这些配置,有助于我们更好地写代码。

免费注册产品

如果细心,你可能发现,软件会显示还有29天试用期,不用担心。点击菜单栏的【帮助】【注册产品】,点击在线获取注册秘钥即可,完全免费获取。不过最近,无法注册了,我就把我的秘钥分享给大家把。
秘钥:PQT8W-68YB2-MPY6C-9JV9X-42WJV

C# 简介

C# 是一个现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的,由 Ecma 和 ISO 核准认可的。
C# 是由 Anders Hejlsberg 和他的团队在 .Net 框架开发期间开发的。
C# 是专为公共语言基础结构(CLI)设计的。CLI 由可执行代码和运行时环境组成,允许在不同的计算机平台和体系结构上使用各种高级语言。
下面列出了 C# 成为一种广泛应用的专业语言的原因:
现代的、通用的编程语言。
面向对象。
面向组件。
容易学习。
结构化语言。
它产生高效率的程序。
它可以在多种计算机平台上编译。
.Net 框架的一部分。

C# 强大的编程功能

虽然 C# 的构想十分接近于传统高级语言 C 和 C++,是一门面向对象的编程语言,但是它与 Java 非常相似,有许多强大的编程功能,因此得到广大程序员的亲睐。
下面列出 C# 一些重要的功能:
布尔条件(Boolean Conditions)
自动垃圾回收(Automatic Garbage Collection)
标准库(Standard Library)
组件版本(Assembly Versioning)
属性(Properties)和事件(Events)
委托(Delegates)和事件管理(Events Management)
易于使用的泛型(Generics)
索引器(Indexers)
条件编译(Conditional Compilation)
简单的多线程(Multithreading)
LINQ 和 Lambda 表达式
集成 Windows

C# 环境

在这一章中,我们将讨论创建 C# 编程所需的工具。我们已经提到 C# 是 .Net 框架的一部分,且用于编写 .Net 应用程序。因此,在讨论运行 C# 程序的可用工具之前,让我们先了解一下 C# 与 .Net 框架之间的关系。

.Net 框架(.Net Framework)

.Net 框架是一个创新的平台,能帮您编写出下面类型的应用程序:
Windows 应用程序
Web 应用程序
Web 服务
.Net 框架应用程序是多平台的应用程序。框架的设计方式使它适用于下列各种语言:C#、C++、Visual Basic、Jscript、COBOL 等等。所有这些语言可以访问框架,彼此之间也可以互相交互。
.Net 框架由一个巨大的代码库组成,用于 C# 等客户端语言。下面列出一些 .Net 框架的组件:
公共语言运行库(Common Language Runtime - CLR)
.Net 框架类库(.Net Framework Class Library)
公共语言规范(Common Language Specification)
通用类型系统(Common Type System)
元数据(Metadata)和组件(Assemblies)
Windows 窗体(Windows Forms)
ASP.Net 和 ASP.Net AJAX
ADO.Net
Windows 工作流基础(Windows Workflow Foundation - WF)
Windows 显示基础(Windows Presentation Foundation)
Windows 通信基础(Windows Communication Foundation - WCF)
LINQ
如需了解每个组件的详细信息,请参阅微软(Microsoft)的文档。
C# 的集成开发环境(Integrated Development Environment - IDE)
微软(Microsoft)提供了下列用于 C# 编程的开发工具:
Visual Studio 2010 (VS)
Visual C# 2010 Express (VCE)
Visual Web Developer
后面两个是免费使用的,可从微软官方网址下载。使用这些工具,您可以编写各种 C# 程序,从简单的命令行应用程序到更复杂的应用程序。您也可以使用基本的文本编辑器(比如 Notepad)编写 C# 源代码文件,并使用命令行编译器(.NET 框架的一部分)编译代码为组件。
Visual C# Express 和 Visual Web Developer Express 版本是 Visual Studio 的定制版本,且具有相同的外观和感观。它们保留 Visual Studio 的大部分功能。

C# Hello World 实例

一个 C# 程序主要包括以下部分:
命名空间声明(Namespace declaration)
一个 class
Class 方法
Class 属性
一个 Main 方法
语句(Statements)& 表达式(Expressions)
注释
让我们看一个可以打印出 “Hello World” 的简单的代码:
using System;
namespace HelloWorldApplication
{
class HelloWorld
{
static void Main(string[] args)
{
/* 我的第一个 C# 程序*/
Console.WriteLine(“Hello World”);
Console.ReadKey();
}
}
}
当上面的代码被编译和执行时,它会产生下列结果:
Hello World
让我们看一下上面程序的各个部分:
程序的第一行 using System; - using 关键字用于在程序中包含 System 命名空间。 一个程序一般有多个 using 语句。
下一行是 namespace 声明。一个 namespace 是一系列的类。HelloWorldApplication 命名空间包含了类 HelloWorld。
下一行是 class 声明。类 HelloWorld 包含了程序使用的数据和方法声明。类一般包含多个方法。方法定义了类的行为。在这里,HelloWorld 类只有一个 Main 方法。
下一行定义了 Main 方法,是所有 C# 程序的 入口点。Main 方法说明当执行时 类将做什么动作。
下一行 // 将会被编译器忽略,且它会在程序中添加额外的 注释。
Main 方法通过语句 Console.WriteLine(“Hello World”); 指定了它的行为。
WriteLine 是一个定义在 System 命名空间中的 Console 类的一个方法。该语句会在屏幕上显示消息 “Hello, World!”。
最后一行 Console.ReadKey(); 是针对 VS.NET 用户的。这使得程序会等待一个按键的动作,防止程序从 Visual Studio .NET 启动时屏幕会快速运行并关闭。
以下几点值得注意:
C# 是大小写敏感的。
所有的语句和表达式必须以分号(;)结尾。
程序的执行从 Main 方法开始。
与 Java 不同的是,文件名可以不同于类的名称。

编译 & 执行 C# 程序

如果您使用 Visual Studio.Net 编译和执行 C# 程序,请按下面的步骤进行:
启动 Visual Studio。
在菜单栏上,选择 File -> New -> Project。
从模板中选择 Visual C#,然后选择 空项目。
为您的项目制定一个名称,然后点击 OK 按钮。
新建一个类
新项目会出现在解决方案资源管理器(Solution Explorer)中。
在代码编辑器(Code Editor)中编写代码。
点击 Run 按钮或者按下 F5 键来运行程序。会出现一个命令提示符窗口(Command Prompt window),显示 Hello World。

也可以使用命令行代替 Visual Studio IDE 来编译 C# 程序:

打开一个文本编辑器,添加上面提到的代码。
保存文件为 helloworld.cs。
打开命令提示符工具,定位到文件所保存的目录。
键入 csc helloworld.cs 并按下 enter 键来编译代码。
如果代码没有错误,命令提示符会进入下一行,并生成 helloworld.exe 可执行文件。
接下来,键入 helloworld 来执行程序。
您将看到 “Hello World” 打印在屏幕上。

2016-12-21 12:08:25 u013628121 阅读数 2492
C# 中文字符比较 or C#汉字比较 or  C# 中文字符串比较 or C#中文名字比较


/// <summary>
/// 类扩展
/// </summary>
public static class StringEx
{
    /// <summary>
    /// 比较中文字符是否相等
    /// </summary>
    /// <param name="name1"></param>
    /// <param name="name2"></param>
    /// <returns></returns>
    public static bool ChinesComPare(this string name1,string name2)
    {
        name1 = name1.Replace(" ", "");//去除掉名字直接的空格
        name2 = name2.Replace(" ", "");//去除掉名字直接的空格
        byte[] utf81 = Encoding.UTF8.GetBytes(name1);
        byte[] utf82 = Encoding.UTF8.GetBytes(name2);
        bool equal = utf81.IsEqual(utf82);
        return equal;
    }

    /// <summary>
    /// 比较2个字节数组是否相等
    /// </summary>
    /// <param name="src"></param>
    /// <param name="dis"></param>
    /// <returns></returns>
    public static bool IsEqual(this byte[] src, byte[] dis)
    {
        bool isEq = false;
        if (src.Length != dis.Length)
        {
            isEq = false;
        }
        else
        {
            isEq = true;
            for (int i = 0; i < src.Length; i++)
            {
                if (src[i] != dis[i])
                {
                    isEq = false;
                    break;
                }
            }
        }
        return isEq;
    }
}

        string n1 = "杨光";
        string n2 = "杨 光 ";
        if (n1.ChinesComPare(n2))
        {
            //true
        }
2016-09-18 20:46:58 u013628121 阅读数 2472
      // <summary> 
        /// 创建固定大小的临时文件 
        /// </summary> 
        /// <param name="fileName">文件名</param> 
        /// <param name="fileSize">文件大小</param> 
        /// <param name="overwrite">允许覆写:可以覆盖掉已经存在的文件</param> 
        public static void CreateFixedSizeFile(string fileName, long fileSize)
        {
            //验证参数 
            if (string.IsNullOrEmpty(fileName) || new[] { Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar }.Contains(
                    fileName[fileName.Length - 1]))
                throw new ArgumentException("fileName");
            if (fileSize < 0) throw new ArgumentException("fileSize");
            //创建目录 
            string dir = Path.GetDirectoryName(fileName);
            if (!string.IsNullOrEmpty(dir) && !Directory.Exists(dir))
                Directory.CreateDirectory(dir);
            //创建文件 
            FileStream fs = null;
            try
            {
                fs = new FileStream(fileName, FileMode.Create);
                fs.SetLength(fileSize); //设置文件大小 
            }
            catch
            {
                if (fs != null)
                {
                    fs.Close();
                    File.Delete(fileName); //注意,若由fs.SetLength方法产生了异常,同样会执行删除命令,请慎用overwrite:true参数,或者修改删除文件代码。 
                }
                throw;
            }
            finally
            {
                if (fs != null) fs.Close();
            }
        }
        /// <summary>
        /// 读取大文件用,读取文件前面指定长度字节数
        /// </summary>
        /// <param name="filePath">文件路径</param>
        /// <param name="readByteLength">读取长度,单位字节</param>
        /// <returns></returns>
        public byte[] ReadBigFile(string filePath,int readByteLength)
        { 
            FileStream stream = new FileStream(filePath,FileMode.Open);
            byte[] buffer = new byte[readByteLength];
            stream.Read(buffer, 0, readByteLength);
            stream.Close();
            stream.Dispose();
            return buffer;
            //string str = Encoding.Default.GetString(buffer) //如果需要转换成编码字符串的话
        }
        /// <summary>
        /// 普通文件读取方法
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public string ReaderFile(string path)
        {
            string fileData = string.Empty;
            ///读取文件的内容     
            StreamReader reader = new StreamReader(path, Encoding.Default);
            fileData = reader.ReadToEnd();
            reader.Close();
            reader.Dispose();
            return fileData;
        }
2019-03-21 08:31:30 lairikeqi 阅读数 5731

一、C#简介

C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。
  C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。


二、Create a New C# Project

环境:Visual Studio (VS)
编译 & 执行 C# 程序
如果您使用 Visual Studio.Net 编译和执行 C# 程序,请按下面的步骤进行:

1、启动 Visual Studio,在菜单栏上选择 File -> New -> Project,从模板中选择 Visual C#,然后选择 Windows,选择 Console Application,为您的项目制定一个名称,然后点击 OK 按钮;
2、新项目会出现在解决方案资源管理器(Solution Explorer)中,在代码编辑器(Code Editor)中编写代码,点击 Run 按钮或者按下 F5 键来运行程序。会出现一个命令提示符窗口(Command Prompt window),显示 输出结果。

或者通过命令符工具

打开一个文本编辑器,添加上面提到的代码,保存文件为 helloworld.cs
打开命令提示符工具,定位到文件所保存的目录
键入 csc helloworld.cs 并按下 enter 键来编译代码
如果代码没有错误,命令提示符会进入下一行,并生成 helloworld.exe 可执行文件
接下来,键入 helloworld 来执行程序。
您将看到 “Hello World” 打印在屏幕上。


三、C# 代码

using System;
namespace HelloWorldApplication
{
    /* 类名为 HelloWorld */
    class HelloWorld
    {
        /* main函数 */
        static void Main(string[] args)
        {
            /* 我的第一个 C# 程序 */
            Console.WriteLine("Hello World!");
            Console.ReadKey();
        }
    }
}

1.using System:using 关键字用于在程序中包含 System 命名空间,一个程序一般有多个using 语句;

2.namespace声明:一个 namespace 是一系列的类,HelloWorldApplication 命名空间包含了类 HelloWorld;

3.class 声明:类 HelloWorld 包含了程序使用的数据和方法声明,类一般包含多个方法,方法定义了类的行为,在这里HelloWorld 类只有一个 Main 方法;

4.Main 方法:是所有 C# 程序的 入口点,Main 方法说明当执行时 类将做什么动作,Main 方法通过语句 Console.WriteLine("Hello World"); 指定了它的行为。

5.WriteLine 是一个定义在 System 命名空间中的 Console 类的一个方法,该语句会在屏幕上显示消息 “Hello,World!”;
  Console.ReadKey(); 是针对 VS.NET 用户,这使得程序会等待一个按键的动作,防止程序从 Visual Studio .NET 启动时屏幕会快速运行并关闭。


四、C# 基本语法

1.using 关键字
	在任何 C# 程序中的第一条语句都是:using System
	using 关键字用于在程序中包含命名空间,一个程序可以包含多个 using 语句

2. class 关键字
	class 关键字用于声明一个类

3. C# 注释
	多行注释以 /* 开始,并以字符 */ 终止,如下所示:
		/* This program demonstrates
		The basic syntax of C# programming 
		Language */
	单行注释是用 '//' 符号表示。例如:
		//end class Rectangle    

4.成员变量: 变量是类的属性或数据成员,用于存储数据
  成员函数: 函数是一系列执行指定任务的语句,类的成员函数是在类内声明的
  标识符: 标识符是用来识别类、变量、函数或任何其它用户定义的项目

5.C#关键字
	关键字是 C# 编译器预定义的保留字,这些关键字不能用作标识符

五、C# 数据类型

在 C# 中,变量分为以下几种类型:

值类型(Value types) 引用类型(Reference types) 指针类型(Pointer types)

1.值类型(Value types)

值类型(Value types):
	bool		布尔值	
	byte		8 位无符号整数	
	char		16 位 Unicode 字符	
	decimal		128 位精确的十进制值
	double		64 位双精度浮点型	
	float		32 位单精度浮点型	
	int			32 位有符号整数类型	
	long		64 位有符号整数类型	
	sbyte		8 位有符号整数类型	
	short		16 位有符号整数类型	
	uint		32 位无符号整数类型	
	ulong		64 位无符号整数类型	
	ushort		16 位无符号整数类型

2.引用类型(Reference types)

引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用。换句话说,它们指的是一个内存位置。使用多个变量时,引用类型可以指向一个内存位置。如果内存位置的数据是由一个变量改变的,其他变量会自动反映这种值的变化。

内置的引用类型有:objectdynamicstring

-> 对象(Object)类型
	对象(Object)类型 是 C# 中所有数据类型的终极基类Object 是 System.Object 类的别名。所以对象(Object)类型可以
被分配任何其他类型(值类型、引用类型、预定义类型或用户自定义类型)的值。但是,在分配值之前,需要先进行类型转换。

	装箱操作: 当一个值类型转换为对象类型时
	拆箱操作: 当一个对象类型转换为值类型时

	object obj;
	obj = 100; // 这是装箱
-> 动态(Dynamic)类型
可以存储任何类型的值在动态数据类型变量中,这些变量的类型检查是在运行时发生的

声明动态类型的语法:dynamic <variable_name> = value;

例如:dynamic d = 20;
	动态类型与对象类型相似,但是对象类型变量的类型检查是在编译时发生的,而动态类型变量的
类型检查是在运行时发生的
->字符串(string)类型
	字符串(string)类型 允许您给变量分配任何字符串值,字符串(string)类型是 System.String 类的别名。它是从
对象(Object)类型派生的,字符串(string)类型的值可以通过两种形式进行分配:引号和 @引号

例如:
string str = "baidu.com";
一个 @引号字符串:@"baidu.com";

	C# string 字符串的前面可以加 @(称作"逐字字符串")将转义字符(\)当作普通字符对待
比如:
	string str = @"C:\Windows";
	等价于:string str = "C:\\Windows";
	
用户自定义引用类型有:classinterface 或 delegate

六、C# 类型转换方法

C# 提供了下列常用的内置类型转换方法

序号	 方法     &               描 述

 1	ToChar 		   把类型转换为单个 Unicode 字符类型
 2	ToDateTime     把类型(整数或字符串类型)转换为 日期-时间 结构
 3	ToDecimal      把浮点型或整数类型转换为十进制类型
 4	ToDouble  		把类型转换为双精度浮点型
 5	ToInt16 / ToInt32 / ToInt64  	把类型转换为 16/32/64 位整数类型
 6	ToString  		把类型转换为字符串类型
 7	ToType  		把类型转换为指定类型
 8	ToUInt16  		把类型转换为 16 位无符号整数类型

七、C# 中

-> 运算符(算术、关系、逻辑、位、赋值、其他)
-> 判断、循环、访问修饰符、方法
-> 数组、字符串、枚举、Class
-> 继承、多态、重载
-> 接口 、命名空间、正则表达式、异常处理
和Java类似

下面列出 C# 一些重要的功能:

布尔条件(Boolean Conditions)
自动垃圾回收(Automatic Garbage Collection)
标准库(Standard Library)
组件版本(Assembly Versioning)
属性(Properties)和事件(Events)
委托(Delegates)和事件管理(Events Management)
易于使用的泛型(Generics)
索引器(Indexers)
条件编译(Conditional Compilation)
简单的多线程(Multithreading)
LINQ 和 Lambda 表达式
集成 Windows


八、Java 和 C# 的相同点和区别

相同点
  都是面向对象的语言,也就是说,它们都能实现面向对象的思想(封装,继承,多态)

区别:

1、开发环境
  C# 用Visual Studio,而JAVA用idea、Eclipse;跨平台Java用虚拟机,C#用Framework;Java所有平台都支持,而C#只有Windows和Linux支持。
  很多网友认为C#语言比Java更先进,如在泛型和linq上,这只能说C#编程体验好。Sun初衷是把Java设计成一个跨平台的Runtime,而Microsoft只是把.Net做成Windows的一个扩展。

2、目前市场上Java比C#占优势
  很多大公司选用Java,如京东,淘宝和百度,现状是在企业更通用,Java做Web类开发很强大,C#做窗体类开发更好。

3、安全性
  Java是开源的,因此在安全性能上是有一些欠缺的,C#经常应用于后台内部网络的开发,C#的安全性是很有保障的。

语法上区别:

  1.C#中的命名空间是namespace,类似于Java中的package(包),在Java中导入包用import而c#中用using;

  2.c#和Java都是从main函数入口的,但是c#中的main函数的首字母必须大写,而且有4种写法;

  3.数据类型:Java跟c#基本都差不多,但是Java的String类型的首字母必须大写,而c#中可以小写也可以大写;还有布尔型,Java中是boolean,c#中是bool;
  
  4.输出:c#有三种方式输出:Cosole.WriteLine()、Cosole.WriteLine(要输出的值)、 Cosole.WriteLine("格式字符串",变量列表); 前两种的用法
与Java中的System.out.println()方法的用法相同,第三种方式是根据占位符输出的,比Java更加方便;

  5.控制流语句:c#跟Java类似,还有c#中的switch如果case后面有内容必须要有break;Java可以没有break;

  6.方法中传递的参数:两种语言都使用值传递与引用传递,C#的引用传递的关键字是ref与out;ref侧重于修改,out侧重于输出,而Java中都以传值方式;

  7.访问修饰符:C#中的访问修饰符与Java中的基本对应,但多出了一个internal,简而言之,C#有5种类型的可访问性,如下所示:
	public:成员可以从任何代码访问
	protected:成员只能从派生类访问
	internal:成员只能从同一程序集的内部访问
	protected:成员只能从同一程序集内的派生类访问
	private:成员只能在当前类的内部访问

  8.由于C#中不存在final关键词,如果想要某个类不再被派生,你可以使用sealed关键词密封;

  9.集合:两种语言都有集合ArrayList,还有通过键访问值的 Java 中是HashMap而 c# 中是HashTable;c#比Java多泛型集合List<T>与Dictionary<K,V>
更容易了,无需拆箱装箱了,更安全;

  10.继承:Java中用关键字extends,c#只用":"就行了.调用父类的构造方法Java用super关键字,而c#用base关键字;
  
  11.多态:抽象类和抽象方法两种语言都用abstract关键字,Java中另外一个类如果继承了它,实现直接重写此方法就可以;而c#必须加上关键字override实现,
C#还比Java多一种虚方法来实现多态;

  12.接口:都用关键字interface定义,Java实现用关键字implements;c#用":"实现。在C#中,接口内的所有方法默认都是公用方法。在Java中,方法声明可以
带有public修饰符(即使这并非必要),但在C#中 显式为接口的方法指定public修饰符是非法的;

  13.C# 中的is操作符与Java中的instanceof操作符一样,两者都可以用来测试某个对象的实例是否属于特定的类型。在Java中没有与C#中的as操作符等价的
操作符,as操作符与is操作符非常相似,但它更富有"进取心":如果类型正确的话,as操作符会尝试把被测试的对象引用转换成目标类型;否则它把变量引用设置成null。
2015-12-23 10:20:42 da_keng 阅读数 8333

获取服务

首先要添加引用:System.ServiceProcess
然后导入命名空间:using System.ServiceProcess;

//获得服务集合
var serviceControllers = ServiceController.GetServices();
//遍历服务集合,打印服务名和服务状态
foreach (var service in serviceControllers)
{
    Console.WriteLine("ServiceName:{0}\t\tServiceStatus:{1}", service.ServiceName, service.Status);
}

启动服务

//获取指定服务,若服务状态不是Runing就Start该服务
var server = serviceControllers.FirstOrDefault(service => service.ServiceName == serviceName);
if (server!=null && server.Status != ServiceControllerStatus.Running)
{
    server.Start();
}

开一个线程定期检测服务状态

static void Main()
{
    ThreadPool.RegisterWaitForSingleObject(new AutoResetEvent(true), new WaitOrTimerCallback(TryStartRServer3), null, 30000, false);
}
private static void TryStartRServer3(object state, bool timedout)
{
    var serviceControllers = ServiceController.GetServices();
    var server = serviceControllers.FirstOrDefault(service => service.ServiceName == "RServer3");
    if (server != null && server.Status != ServiceControllerStatus.Running)
    {
        server.Start();
    }
}

c#调用c的dll

阅读数 3344

C#的运行环境

阅读数 3036

C# 图形面积计算

阅读数 1039

c#

博文 来自: qq_34801639
没有更多推荐了,返回首页