
C# 基行
文章平均质量分 59
C# 的基础介绍
Ca_va
我曾远去,我亦归来
展开
-
c#之new关键词——隐藏基类方法
new关键词有三个作用:运算符:创建对象实例约束:泛型约束,约束可使用的泛型类型修饰符:再派生类型定义一个重名的方法,隐藏掉基类方法本次只讲在修饰符的作用当从基类继承了一个(非抽象成员时),也就继承了父类的实现代码。如果是virtual成员,可以override;另外一种方法也能隐藏父类的实现代码(虚成员和非虚成员都可使用):定义与父类相同的方法名,加上关键词new```csharp public class Parent { public void Fun(转载 2021-03-04 20:57:06 · 1487 阅读 · 1 评论 -
C#异常 报数据读取器与指定的“”不兼容。某个类型为“”的成员在同名的数据读取器中没有对应的列。
实现功能:查询单张表Student中返回指定的列一:数据库表结构:二:存储过程USE [AdventureWorksDW]GO/****** Object: StoredProcedure [dbo].[GetAllStudentInfo] Script Date: 2014/11/18 21:47:36 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- ================================转载 2020-12-09 19:01:51 · 1491 阅读 · 0 评论 -
C#基础 XMLDocument类操作XML文件
XmlDocument类:用于xml文档的操作类,可以为xml文件进行增删改查操作也有人用于操作web.config,但不建议操作文件的创建 //初始化xmlDocument XmlDocument xmldoc = new XmlDocument(); //加载指定目录下的xml文件 xmldoc.Load($"{HttpRuntime.AppDomainAppPath}\\Web.Xml"); //创建xml原创 2020-12-01 17:26:58 · 487 阅读 · 0 评论 -
C#基础 获取项目的根目录
编写程序的时候,经常需要用的项目根目录。自己总结如下1、取得控制台应用程序的根目录方法方法1、Environment.CurrentDirectory //取得或设置当前工作目录的完整限定路径方法2、AppDomain.CurrentDomain.BaseDirectory //获取基目录,它由程序集冲突解决程序用来探测程序集2、取得Web应用程序的根目录方法方法1、HttpRuntime.AppDomainAppPath.ToString();//获取承载在当前应用程序域中的应用程序的应用程序目转载 2020-12-01 11:08:44 · 262 阅读 · 0 评论 -
C#基础 异常之“当前上下文中不存在名称“ViewBag”,当前上下文不存在名称“model”
自己的项目出现了错误提示,却能编译成功,但是有点强迫症,总是想解决这个错误。上网找了一堆,都是删除缓存等一些方法,但是没有多大用处,我觉得还是版本号不对,没有引用进来相应的配置,所以配置下了Config文件。由于有两个Web.Config文件,所以需要引用文件的配置信息一致。项目下的Web.config:Views下的web.config:要把版本号比对一致,但是有时候会出现漏掉一些【重点】改成3.0.0.0【注意】一般都是关闭所有窗口文档,在操作修改,修改后生成应该就可以了。..转载 2020-07-20 15:55:45 · 2548 阅读 · 0 评论 -
C#基础之Filter filter跳转的使用
在刚学mvc的时候 我一开始随便的做了拦截跳转,这样也实现了跳转 表面看起来完全没问题!if (filterContext.HttpContext.Session[“userId”] == null){filterContext.HttpContext.Response.Redirect("~/LoginContent/Login", true);}但是某一天,突然调试了一下发现这个跳转 并不是及时的,而是会等把index的这个 action 执行,视图加载完毕才跳转!也是就是类似 在asp.ne转载 2020-10-20 17:33:50 · 1131 阅读 · 0 评论 -
C#基础 异常之Postman可以发送post请求,但是客户端访问提示超时
今天一直出现一个异常:本机调试一个http请求时,通过Postman发送Http请求,可以获取到数据但是通过客户端或者是网页访问请求时1.要么一直超时2.要么就发生如下异常The connection to the upstream proxy/gateway failed. Closing Fiddler, changi。此异常发生后,网络也不能访问(但显示网络连接正常)解决方案:打开Ie浏览器,打开右上方设置-internet选项-连接-局域网设置-取消勾选"为LAN使用代理服务器"原创 2020-10-14 19:23:25 · 4736 阅读 · 0 评论 -
C#基础 迭代器之概念
迭代器模式是设计模式中行为模式(behavioral pattern)的一个例子,他是一种简化对象间通讯的模式,也是一种非常容易理解和使用的模式。简单来说,迭代器模式使得你能够获取到序列中的所有元素而不用关心是其类型是array,list,linked list或者是其他什么序列结构。这一点使得能够非常高效的构建数据处理通道(data pipeline)–即数据能够进入处理通道,进行一系列的变换,或者过滤,然后得到结果。事实上,这转载 2020-09-11 13:59:55 · 239 阅读 · 0 评论 -
C#基础 函数式编程之惰性求值Lazy<T>
严格求值策略和非严格求值策略在开始介绍今天要讲的知识之前,我们想要理解严格求值策略和非严格求值策略之间的区别,这样我们才能够深有体会的明白为什么需要利用这个技术。首先需要说明的是C#语言小部分采用了非严格求值策略,大部分还是严格求值策略。非严格求值策略首先我们先演示非严格求值策略的情况,我们先在控制台项目中写一个DoOneThing方法。然后在Main方法中写入下面这串代码:然后我们运行程序,会发现DoOneThing方法并没有执行(||的短路功能)。当然这看起来也很正常,因为这是或,并且第转载 2020-09-11 11:10:26 · 407 阅读 · 0 评论 -
C#基础 File之使用File.Create/Delete方法创建文件时报错
File.Create在一个程序里偶然用了System.IO.File.Create去创建文件,运行时一直报错(进程被占用),后来在网上找到了解决办法,引用了一下。winfrom中操作文件:判断是否有当前的文件存在,不存在则进行创建,在进行操作;if(!System.IO.File.Exists(fileName)){ System.IO.File.Create(fileName);}但是当我运行到发现没有当前的文件,就直接创建当前文件,之后直接进行操作,出问题了直接报出异常,当前文转载 2020-08-14 16:25:06 · 1850 阅读 · 0 评论 -
C#基础 参数化SQL查询及SQL防注入原因
参数化写法1.不使用sql参数化string sqlStr = "select * from [Users] where UserName='" + txtUserName.Text.Trim() + "'and Password='" + txtUserPassword.Text.Trim() + "'";原创 2020-08-13 10:44:19 · 951 阅读 · 0 评论 -
C#通信篇 IP之获取客户端ip,客户端操作系统,HttpRequest Request 详解
Request对象的作用是与客户端交互,收集客户端的Form、Cookies、超链接,或者收集服务器端的环境变量。位于System.Web命名空间下,属于HttpRequest类。request对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的一些信息。客户端可通过HTML表单或在网页地址后面提供参数的方法提交数据,然后通过request对象的相关方法来获取这些数据。request的各种方法主要用来处理客户端浏览器提交的请求中的各项参数和选项。Request.ServerVariables转载 2020-08-11 11:18:06 · 1287 阅读 · 0 评论 -
C#基础 异常之Conflicting versions of ASP.NET Web Pages detected: specified version is “1.0.0.0”
提示报错:“Conflicting versions of ASP.NET Web Pages detected: specified version is “1.0.0.0”, but the version in bin is “2.0.0.0”翻译:检测到 ASP.NET Web Pages 的冲突版本: 指定的版本为“1.0.0.0”,而 bin 中的版本为“2.0.0.0”。解放方案在web.config文件的appSetting中,定义了webpages的版本将该key的值改成对应的版转载 2020-08-10 14:39:36 · 603 阅读 · 0 评论 -
C#基础 Razor之与jQuery交互不得不说的坑
2020年了,居然还有可恶的老系统,还有可恶的Razor,哎。。。。代码通过@helper初始化数据,生成HtmlResult的类型数据@helper Html_HourOptions(){ for (int i = 0; i < 24; i++) { <option value="@i">@i.ToString("00")</option> }}@helper Html_MinuteOptions(){ for (i原创 2020-07-24 17:39:42 · 894 阅读 · 0 评论 -
C#基础 Razor之C# 对象在JavaScript中的转换
var arr= JSON.parse('@Html.Raw( new System.Web.Script.Serialization.JavaScriptSerializer() .Serialize( Model.CustomerList))');转载 2020-07-16 20:16:29 · 809 阅读 · 0 评论 -
C#基础 关键词之Partial
C# 2.0 可以将类、结构或接口的定义拆分到两个或多个源文件中,在类声明前添加partial关键字即可。例如:下面的PartialTest类class PartialTest{ string Str_FieldTest; int Int_FieldTest; public void DoTest() { Debug.Print("Test"); }}可在不同源文件中写成下面形式:一个文件中写:partial class PartialTest{转载 2020-06-12 16:29:51 · 165 阅读 · 0 评论 -
C#基础 关键字之const,readonly
(1) readonly和const都是用来标示常量的。(2) 初始化赋值不同。const修饰的常量必须在声明的同时赋值。例如:public class Class1{ public const int MaxValue = 10; //正确声明 public const MInValue; //错误:常量字段要求提供一个值 public Class1() { MinValue = 10; }}转载 2020-06-12 10:21:40 · 393 阅读 · 0 评论 -
C#基础 关键字之volatile
volatile基础msdn的解释:http://msdn.microsoft.com/zh-cn/library/x13ttww7.aspxvolatile 关键字指示一个字段可以由多个同时执行的线程修改。声明为 volatile 的字段不受编译器优化(假定由单个线程访问)的限制。这样可以确保该字段在任何时间呈现的都是最新的值。volatile 修饰符通常用于由多个线程访问但不使用 lock 语句对访问进行序列化的字段。有关在多线程方案中使用 volatile 的示例,请参见如何:创建和终止线程(C转载 2020-06-12 09:41:56 · 237 阅读 · 0 评论 -
C#基础 底层原理之代码编译
首先,c#源码经过c#编译器被编译成托管模块(IL中间代码、元数据(Metadata))然后,使用C#编译器以及程序集链接器(Assembly Linker ---- AL.exe)将上述托管模块以及项目的资源文件Combine(整合)成一个程序集(Assembly)上述程序集就是你所看到的exe文件或者dll文件等等,程序集中包含了manifest描述文件,是该程序集内容以及关系...转载 2020-03-23 23:23:11 · 1001 阅读 · 0 评论 -
C#基础 概念之委托,事件(面试:猫叫了,老鼠跑了主人醒了 )其一:初探
事件事件基于委托,为委托提供了一种发布/订阅机制(观察者模式)事件必须包含三部分:事件的订阅者事件的触发者/发布者订阅者和触发者之间的数据传输通道事件(event)的本质:事件本身其实就是一个委托链问题:猫叫了一声,老鼠们跑了,主人醒了事件初探订阅者用于在事件触发后,做出对应的响应行为此处传入的ifCatMiao就是事件的结果,WakeUp就是响应行为 /// <...原创 2020-04-18 10:47:23 · 607 阅读 · 0 评论 -
C#基础 方法之IsAssignableFrom
isAssignableFrom(Class<?> c)标识 “当前Class 是否是给定的 Class 的超类或者超接口”。是 返回true,否则返回false。标识 “当前Class 是否与定的 Class 的相同”。是 返回true,否则返回false。如果 “如果该 Class 表示一个基本类型,且指定的 Class 参数正是该 Class 对象”,是则返回true,否则放回false。 public static void main(String[] args){转载 2020-06-08 15:31:23 · 5602 阅读 · 0 评论 -
C#基础 操作符之as
在程序中,进行类型转换时常见的事,C#支持基本的强制类型转换方法,例如Object obj1 = new NewType();NewType newValue = (NewType)obj1;这样强制转换的时候,这个过程是不安全的,因此需要用try-catch语句进行保护,这样一来,比较安全的代码方式应如下所示:Object obj1 = new NewType();NewType newValue = null;try{newValue = (NewType)obj1;}catch (转载 2020-06-05 10:04:45 · 355 阅读 · 0 评论 -
C#基础 异常之Inconsistent accessibility(返回类型不一致问题)
当新建一个model的时候,默认是不加public属性的,所以当某个方法中使用到这个model,并作为返回值时,方法是public属性,这时候方法会报错,错误如下:Error 2 Inconsistent accessibility: return type ‘System.Collections.Generic.List<Business.T11.CompanyInfoForAllDisplayModel>’ is less accessible than method ‘Bus转载 2020-06-01 13:53:05 · 1002 阅读 · 0 评论 -
C#基础 操作符之where的用法 泛型约束
啥叫泛型约束:就是你必须要符合这个规则来,不然就不让你编译通过 。以上见解来自水木大哥我们经常可以看到这样的代码 public class InterfaceRestrict<T> where T : IComparable { }而T后面跟的是泛型约束,这个案例的意思是,代入的类T必须是实现了IComparable接口的类以下来介绍泛型约束中where 的用法Where的使用啥叫泛型约束:就是你必须要符合这个规则来,不然就不让你编译通过 。接口约束基类约束原创 2020-05-20 17:30:38 · 1150 阅读 · 0 评论 -
C#基础 异常之DBfirst table中的列‘xxx’为DBnull
目前问题原因具体位置具体操作如下一:重启mysql服务win+r ->输入services.msc进入->找到mysql服务-重启或者在右下角选择mysql -选择MySQL服务并重启(restart)数据库执行语句use database name;set global optimizer_switch=‘derived_merge=OFF’;重新选择dbfirst...原创 2020-06-02 14:31:42 · 205 阅读 · 0 评论 -
C#基础 概念之委托,事件(面试:猫叫了,老鼠跑了主人醒了 )其三:观察者模式
.net 委托,事件(面试:猫叫了,老鼠跑了主人醒了 )其一.net 委托,事件(面试:猫叫了,老鼠跑了主人醒了 )其二事件事件基于委托,为委托提供了一种发布/订阅机制(观察者模式)事件必须包含三部分:事件的订阅者事件的触发者/发布者订阅者和触发者之间的数据传输通道事件(event)的本质:事件本身其实就是一个委托链事件与委托链的异同:相同事件的本质就是委托链,可以进行委托...原创 2020-04-18 11:35:49 · 417 阅读 · 0 评论 -
C#基础 概念之委托,事件(面试:猫叫了,老鼠跑了主人醒了 )其二:封装
.net 委托,事件(面试:猫叫了,老鼠跑了主人醒了 )其一事件事件基于委托,为委托提供了一种发布/订阅机制(观察者模式)事件必须包含三部分:事件的订阅者事件的触发者/发布者订阅者和触发者之间的数据传输通道事件(event)的本质:事件本身其实就是一个委托链事件与委托链的异同:相同事件的本质就是委托链,可以进行委托链的增加和移除不同事件本身时私有的,只能通过+=和-=...原创 2020-04-18 11:16:41 · 427 阅读 · 0 评论 -
c#基础 概念之序列化 [Serializable]的作用【转】
如果你做远程方法调用(RPC)时,比如,服务器端有个类A及对象a,客户端需要无视网络的存在,直接调用对象a。这种情况下,就需要把类A设计为可序列化的,那么它的实例a也就可以实例化了。说得简单点,在服务器的 命名空间中的对象a,肯定不能直接被客户端的命名空间中的一个对象调用,这不可能,对吧。但是如果你把服务器的对象a中的特征属性(不一定是所有属性)变成xml,传送到客户端,然后客户端用你给的特征...转载 2020-03-23 23:40:30 · 592 阅读 · 0 评论 -
C#基础 概念之DateTime是值类型还是引用类型
近期遇到了DateTime到底是值类型还是引用类型的疑惑,顺势较深入地了解一下DateTime相关的内容结论:DateTime是值类型,因为DateTime是结构体,而结构体继承自System.ValueType,属于值类型一、DateTime是值类型还是引用类型的探索二、了解DateTime结构体三、DateTime.Now和DateTime.UtcNow是怎么计算出来的一、DateT...转载 2020-03-23 23:09:55 · 623 阅读 · 0 评论 -
C#基础 概念之重写、重载和隐藏
NET面试题:简述C#中重写、重载和隐藏的概念在大多数面向对象的语言中,都有重写、重载和隐藏的概念,这些机制是设计高可扩展性的面向对象程序的基础。读者应该做到不仅了解它们的功能、读懂包含这些概念的代码,也能进一步地运用它们设计出优美的面向对象的程序。所涉及的知识点· 重写、重载和隐藏的概念分析问题重写、重载和隐藏在C#中都有相应的关键字,它们是构建面向对象程序的基础。1.重写和隐藏重...转载 2020-03-23 22:49:14 · 710 阅读 · 0 评论