【.NET】【基础】

bin\Debug“项目名称.exe.config”:        项目实际使用的配置文件,在程序运行中所做的更改都将被保存于此;“项目名称.vshost.exe.config”: 原代码“app.config”的同步文件,在程序运行中不会发生更改。
//托管代码可以使用 System.Configuration 命名空间中的类从配置文件中读取设置,但不可以使用 System.Configuration 向这些文件写入设置。System.Configuration.ConfigurationSettings.AppSettings["keyname"]AssemblyInfo.cs//是关于本程序集(一般是dll)的一些信息,主要都是Attribute(特性),用来记录本程序集的版权,公司,以及自已可以定义的一些信息Control //类表示类的基类 用户界面 (UI) 元素,使用 ControlTemplate 来定义其外观。 ContentControl //表示包含任何类型的单项内容的控件。。UserControl //类提供创建的控件的简单方法。
M V VMM:    在前端页面中,把Model用纯JavaScript对象表示,    V:    View负责显示,两者做到了最大限度的分离。    VM:   把Model和View关联起来的就是ViewModel。ViewModel负责把Model的数据同步到View显示出来,还负责把View的修改同步回Model。ORM工具 Entity Framework 与 NHibernate比较:    1) Entity Framework封装性更好,增、删、改、查询更方便2) Entity Framework使用更方便的Linq to Entity查询,延迟加载(只有在需要时才加载,只加载需要的数据) 。动态链接库(Dynamic Link Library 或者 Dynamic-link Library,缩写为 DLL) ,是微软公司在微软Windows操作系统中,实现共享函数库概念的一种方式。这些库函数的扩展名是 ”.dll"、".ocx"(包含ActiveX控制的库)或者 ".drv"(旧式的系统驱动程序)。动态链接库文件,是一种不可执行的二进制程序文件管理信息系统(Management Information System,简称MIS)数据字典 (数据库的中心,存放在SYSTEM表空间中)
是一组只读的表,存放有数据库所用的有关信息(表、视图、簇、及索引等。分配多少空间,当前使用了多少空间等。列的缺省值。约束信息的完整性。用户的名字。用户及角色被授予的权限。用户访问或使用的审计信息。其它产生的数据库信息)BI(商业智能,很炫酷的界面的那种)
RPC(远程过程调用)
NAT(网络地址转换)
ACL(访问控制列表)public interface Application : _Application  // _Application是有内容的接口,Application 是无内容的接口dynamic this[object Index] { get; }	//可以 对象[索引] 来取值dynamic get_Value(object RangeValueDataType);//可以 对象[索引] 来取值VSTO(Visual Studio Tools for Office )是VBA的替代,使得开发Office应用程序更加简单,就是使用C#来开发office插件1.适用于整个excel窗体的插件  2.适用于某个sheet的插件数据透视表:对excel表进行自动分类统计dynamic关键字,一般而言,动态语言在编译时不会对类型进行检查,而是在运行时识别对象的类型,由于编译时不会去检查类型,所以导致IDE的IntellSense失效System.__ComObjectOLE VBX OCX ActiveXOLE :控件的本质是微软公司的 对象链接和嵌入(OLE) 标准.OCX: (OLE Control Extension),类似.DLL.VBX:(Visual Basic Extension)Visual Basic文件扩展名ActiveX: 网页中的OCX,并称其为ActiveX控件
COM:作为ActiveX的更新技术,扩展名.dll
用C++和VB开发可以生成OCX或COM组件,但是用C#只能生成COM组件。互操作: 让受管代码对象和非受管对象协同工作的过程称为互用性(interoperability),通常简称为 interop托管代码:就是中间语言,运行在CLR上
非托管代码:被编译为机器码,运行在机器上ASP即Active Server Pagesint[a, b]才是二维数组
int[][]称为数组的数组文本框不换行:\n改为\r\n记录某段代码运行的所需时间
using System.Diagnostics;
Stopwatch的Start方法	Stopwatch的Stop方法	
Elapsed属性以时分秒的形式,ElapsedMilliseconds是以毫秒的形式保存了时间。@"字符串"	让字符串不转义方法为IEnumerable类型时用yield return,让函数不只返回一个结果
out 关键字通过引用传递参数。 它与 ref 关键字相似,只不过 ref 要求在传递之前初始化变量
ref 关键字指示按引用传递的值
params 关键字可以指定采用数目可变的参数的方法参数。
声明:Fun(params object[] list)  
调用:Fun(1, 'a', "test");catch (System.Exception ex)MessageBox.Show("Error: " + ex.Message);}控制台
MessageBox.Show("message");
Console.WriteLine("输入 的值");
string arg=Console.ReadLine();
Convert.ToDouble(Console.ReadLine()); 
防止控制台瞬间就没了:
Console.ReadKey(); //等待按下按键	或者		Console.ReadLine();字符串
string[] arrTemp = "abc,abcd,abcdef,abcdefg,abcdefgh".Split(',');
C#6.0版本即vs2015可以这样取值Console.WriteLine($" {names.Count}");//name是一个list泛型列表数组
//创建一个list对象Cats
List Cats= new List();//为Cats添加项
Cats.Add("Cat1");
Cats.Add("Cat2");
Cats.Add("Cat3");
清空数组>>>Array.Clear 动态数组ArrayList,一般用List<类型>比较好
double[] balance = new double[10];
double[] balance = { 2340.0, 4523.69, 3421.0};Hashtable ht = new Hashtable();
ht.Add("001", "Zara Ali");
ht[键];可空函数参数
public void Function(double a=null)特性
用特性标注代码已过期
[Obsolete("ThisClass is obsolete. Use ThisClass2 instead.")]
public class ThisClass//特性只作元数据之用。 不借助一些外在力量,特性其实什么用也		没有。若要查找并使用特性,通常需要使用反射抽象类的抽象方法必须实现访问级别
public任意
默认:internal只可以被本组合体(Assembly)内所有的类存取,其编译后的文件扩展名往往是“.DLL”或“.EXE”。 
protected internal唯一的一种组合限制修饰符,它只可以被本组合体内所有的类和这些类的继承子类所存取。 
protected本类,继承类
private本类
sealed 修饰符可阻止其他类继承自该类六种类型对话框:
文件打开对话框、文件保存对话框
字体选择对话框、颜色选择对话框
打印机设置对话框、文件打印预览对话框
文件夹选择对话框:FolderBrowserDialog dialog = new FolderBrowserDialog(); dialog.Description = "请选择文件夹”;if (dialog.ShowDialog() == DialogResult.OK)  {string foldPath = dialog.SelectedPath;}static 静态初始化块 实现 单例模式:(该块只会被调用一次)using语句::
当在某个代码段中使用了类的实例,而希望无论因为什么原因,只要离开了这个代码段就自动调用这个类实例的Dispose。 bool? Fun() : 该函数可以返回true false nulldefault(对象) :返回对象未初始化时的默认值在catch中使用 throw;  //继续抛出异常给调用它的方法Dictionary是Hastbale的泛型实现。 (都是键值对)特性
可向程序中添加元数据。元数据是有关在程序中定义的类型的信息。所有的 .NET 程序集都包含指定的一组元数据,这些元数据描述在程序集中定义的类型和类型成员。可以添加自定义特性,以指定所需的任何附加信息。EventHandler(delegate类型,用于传递方法)this.Load += new System.EventHandler(this.Form1_Load);订阅
publisher.RaiseCustomEvent += HandleCustomEvent;
等同于
publisher.RaiseCustomEvent += new CustomEventHandler(HandleCustomEvent);退订publisher.RaiseCustomEvent -= HandleCustomEvent;委托:把函数当参数用(把我的函数当参数传给你用)
delegate 函数的返回类型 委托的名字(要委托的方法的参数)
调用
new  委托的名字(要委托的方法的名字);new Thread(委托);
new Thread(new ThreadStart(	delegate(){}	)); 等同于
new Thread(new ThreadStart(	()=>{}	));
lambda 表达式:(参数) => 函数体Linq:语言集成查询3.5或者更高版本
var result =from p in ints数组 where p % 2 == 0 select p;
1) from 临时变量 in 实现IEnumerable接口的对象  where条件表达式 [orderby 条件]  [group by 条件] select 临时变量中被查询的值
2) 实现IEnumerable接口的对象.LINQ方法名(lambda表达式)。如:
string input = "hello world";
int count = input.Count(w=>w == 'o'); //查询字母o出现的次数
注意:能够使用LINQ的对象需要实现IEnumerable接口。并且LINQ的查询表达式是在最近一次创建对象时才被编译的。
eg:
from s in Students where s.id<10 && s.Name.Length<10 orderby s.Name select new{s.id,s.Name}
<==>Students.Where(s=>(s.id<10&&s.Name.Length<10)).OrderByDescending(o=>s.Name).Select(o=>new{o.id,o.Name})class A where T:new()
这是类型参数约束,where表名了对类型变量T的约束关系。where T:A 表示类型变量是继承于A的,或者是A本省。where T: new()指明了创建T的实例应该使用的构造函数。.NET支持的类型参数约束有以下五种:where T: struct                                     T必须是一个结构类型where T: class                                       T必须是一个类(class)类型,不是结构(structure)类型where T: new()                                      T必须要有一个无参构造函数where T: NameOfBaseClass                     T必须继承名为NameOfBaseClass的类where T: NameOfInterface                      T必须实现名为NameOfInterface的接口组件,对象,客户端和服务器
COM使用全球唯一的标识符(GUID)客户端请求COM对象的服务。SCM通过搜索类ID(GUID)来查找请求的对象注册表项。DLL被定位并加载到内存中。SCM调用DllGetClassObject中的函数,将必要的类作为第一个参数传递。函数DllGetClassObject是使DLL成为COM DLL的函数。其他函数,如DllRegisterServer和DllUnregisterServer,对于DLL作为COM DLL来说是很好的,但不是必须的。类对象通常实现接口IClassFactory。SCM在此接口上调用方法CreateInstance以将适当的对象实例化到内存中。最后,SCM向新创建的对象请求客户端请求的接口,并将该接口传递回客户端。在这个阶段,供应链管理退出了等式,客户和对象直接通信。从前面的一系列步骤中,很容易想象对象的打包(DLL与EXE)中的更改对对象的客户端没有什么影响。COM处理这些差异。Primary Interop Assemblies(PIA)每个组件都有一个独一无二的标识GUID。
接口的GUID称为IID
组件类的GUID称为CLSID,CLSID还有一个文本别名,即所谓的ProgID,它是一个由项目名加组件类类名组成的字符串。防止DLL灾难(版本问题)强命名程序集:.Net使用Name、Version、Culture、PublicToken四个属性来唯一标识一个程序集。创建一个强命名程序集需要获得一个用强命名实用工具(Strong Name Utility,即SN.exe)产生的密钥。全局程序集缓存(GAC): 这个已确知的目录称作GAC,C:\Windows\Assembly\ , 使用gacutil.exe命令可以将具有强命名的程序集添加到全局程序集缓存。COM Model组件,控件 .NET Model对应的名字
Type libraries Metadata
DLL Assemblies
Interface based Object based
GUIDs Strong names
QueryInterface Cast
Reference counting Memory management(Garbage collection)
Registry Global Assembly Cache (gacutil.exe可以将具有强命名的程序集添至全局程序集缓存)COM对象的接口一旦被公布,就不能再修改,但可以增加新接口,在ArcObjects中有很多以“2”、“3”结尾的接口,都是这样发展的产物EXE或DLL文件包括中间语言MSIL代码、元数据和一个文件清单。清单则列出了程序集中的所有文件和软件组件,同时指出了CLR在哪里可以找到应用程序运行时需要的其它组件。//WPF的单例模式(APP中 启动MainWINDOW)//我们很自然还是联想到了原先在Windows Forms时代的WindowsFormsApplicationBase,那里面做这个事情太简单了。//首先,添加Microsoft.VisualBasic的引用namespace WpfApplication1{public class EntryPoint{[STAThread]public static void Main(string[] args){SingleInstanceManager manager = new SingleInstanceManager();manager.Run(args);}}//使用VB位检测单个实例并进行相应处理:// *第一个实例加载时会触发OnStartup// *再次重新运行应用程序时会触发OnStartupNextInstance//注意:由于IsSingleInstance,它被重定向到这个实例public class SingleInstanceManager : WindowsFormsApplicationBase{SingleInstanceApplication app;public SingleInstanceManager(){this.IsSingleInstance = true;}protected override bool OnStartup(Microsoft.VisualBasic.ApplicationServices.StartupEventArgs e){// First time app is launchedapp = new SingleInstanceApplication();app.Run();return false;}protected override void OnStartupNextInstance(StartupNextInstanceEventArgs eventArgs){// Subsequent launchesbase.OnStartupNextInstance(eventArgs);app.Activate();}}public class SingleInstanceApplication : Application{protected override void OnStartup(System.Windows.StartupEventArgs e){base.OnStartup(e);// Create and show the application's main window//MainWindow window = new MainWindow();Window1 window = new Window1();window.Show();}public void Activate(){// Reactivate application's main windowthis.MainWindow.Show();this.MainWindow.Activate();}}} SqlConnection(connectionString).Open();
通过 DataAdapter 使用数据源中的数据生成和填充 DataSet 中的每个 DataTable。adapter.TableMappings.Add("Table", "Suppliers");SqlCommand command = new SqlCommand("SELECT SupplierID, CompanyName FROM dbo.Suppliers;",connection);command.CommandType = CommandType.Text; adapter.SelectCommand = command;DataSet dataSet = new DataSet("Suppliers");  adapter.Fill(dataSet);
DataSet由一组 DataTable 对象组成
DataTable	table.Columns.Add(column);
DataColumn 
DataRow 
string 值=dt.Rows[0]["column1"].ToString();
//选择column0列值为"李四"的行的集合
DataRow[] drs = dt.Select("column0 = '李四'");
DataRow[] matches = dt.Select("id<'003' and name='名字11'");
string strName = matches[0]["name"].ToString();
取得某一列的值到list,用DataRow!!!!!!!!!!!!!
ArrayList list= new ArrayList();
foreach (DataRow row in datatable.Rows)
{list.Add(row["课程编号"].ToString());
}IDisposable 接口提供释放非托管资源的机制。
非托管资源:就是非.NET平台框架的资源,比如,连接数据库,操作Office等.NET里的平台互操作都是非托管资源。这些资源用完都要立即释放掉的。
非托管,需要明确的释放系统资源(内存)等操作。比如你读取文件,之后需要对各种Stream进行Close等操作。比如 SqlDataReader 读取数据完毕之后,需要 reader.close();等
using 语句提供可确保正确使用 IDisposable 对象的方便语法。
using (Font font1 = new Font("Arial", 10.0f)) 
{byte charset = font1.GdiCharSet;
}
等同于
{Font font1 = new Font("Arial", 10.0f);try{byte charset = font1.GdiCharSet;}finally{if (font1 != null)((IDisposable)font1).Dispose();}
}mysql	用户名 root 密码 1234 
postgres	用户名 postgres 密码1234
Oracle 	SYSTEM 123456jdbc:postgresql://localhost:5432/databasemyeclipse中的反向工程:由数据表 自动生成 hbm配置文件hkey_local_machine //包含本机的配置信息。其中config子树是显示器打印机信息; enum子树是即插即用设备信息;system子树是设备驱动程序和服务参数的控制集合;software子树是应用程序专用设置。
hkey_classes_root //键包含的文件名扩展名关联和COM类注册信息,是从 hkey_local_machine/software/classes复制的。
hkey_current_config //包含常被用户改变的部分硬件软件配置,如字体设置、显示器类型、打印机设置等。是从hkey_local_machine/config复制的。
hkey_users //所有登录用户信息。
hkey_current_user //包含登录的用户配置信息,是从hkey_users/当前用户子树复制的。文件扩展名类注册和文件扩展名信息存储在HKEY_LOCAL_MACHINE和HKEY_CURRENT_USER键下。HKEY_LOCAL_MACHINE\Software\Classes //下项包含可应用于所有用户在本地计算机上的(默认设置)。HKEY_CURRENT_USER\Software\Classes //下键包含仅适用于交互式用户设定。(优先级更高)HKEY_CLASSES_ROOT //显示的是两者合并的视图如果程序集是32位的,而机器是64位的RegistryKey会默认转向HKLM>Software>Wow6432Node下面去找相关节点,而不是在Software下面找,WOW64是x86仿真器,允许32位基于Windows的应用程序在64位Windows上无缝运行
32位进程无法加载64位DLL以执行,而64位进程无法加载32位DLL以供执行HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部