
C#
willingtolove
一念成佛,一念成魔!
展开
-
HTTP Status 406 – Not Acceptable 的解决方法
#事故现场向某api接口发送请求,返回406,如下:The target resource does not have a current representation that would be acceptable to the user agent, according to the proactive negotiation header fields received in the request, and the server is unwilling to supply a defau.原创 2021-12-07 19:45:19 · 2974 阅读 · 0 评论 -
C#中的泛型,使用变量类型作为泛型参数T
#示例代码1、类Class3namespace Test{ public class Class3 { public string Name { get; set; } }}2、类Class2namespace Test{ public class Class2 { public static string Fun<T>(string str) where T : class {原创 2021-08-06 14:38:09 · 4177 阅读 · 0 评论 -
【Resharper】C# “Simplify conditional ternary expression”
#事故现场: 对某个对象做空值检测的时候,结合三元运算符给某变量赋值的时候,R#提示:"Simplify conditional ternary expression" ; R#建议对该种写法进行简写优化;#解决方案: 我们可以按住Alt+Enter,接受R#的建议,则代码优化如下:bool isFuzzySearch = context.Request["Is...原创 2019-06-19 13:12:26 · 329 阅读 · 0 评论 -
C# DateTime与时间戳TimeStamp互转
文章目录#方法#调用#方法 public class DateTime_TimeStamp { /// <summary> /// DateTime转时间戳 (方法一) /// </summary> /// <param name="dt">DateTime</param> /// <returns>时间戳(秒)</returns>原创 2021-02-02 16:02:51 · 5159 阅读 · 0 评论 -
C#获取两个时间的分钟差
#方法 /// <summary> /// 两个时间的分钟差 /// </summary> /// <param name="dateBegin">开始时间</param> /// <param name="dateEnd">结束时间</param> /// <returns></returns> p.原创 2020-12-16 20:41:51 · 1947 阅读 · 0 评论 -
C#过滤不合法的文件名或者文件路径字符
/// <summary>/// 过滤不合法的文件名字符/// </summary>/// <param name="name"></param>/// <returns></returns>public static string FilterInvalidFileNameChars(string name){ StringBuilder titleBuilder = new StringBuilder(name.原创 2020-12-14 14:34:35 · 1498 阅读 · 0 评论 -
C#中的虚方法(virtual)实例讲解
https://www.cnblogs.com/zhaoshujie/p/10502404.html原创 2020-11-22 16:15:10 · 472 阅读 · 0 评论 -
C# 中抽象类和接口的区别(简单理解)
#区别区别一,两者表达的概念不一样。抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于“是”的关系;而接口是定义行为规范,因此对于实现接口的子类来说,相对于接口来说,是“行为需要按照接口来完成”。这些听起来有些虚,举个例子。例如,狗是对于所有狗类动物的统称,京哈是狗,牧羊犬是狗,那么狗的一般特性,都会在京哈,牧羊犬中找到,那么狗相对于京哈和牧羊犬来说,就属于这类事物的抽象类型;而对于“叫”这个动作来说,狗可以叫,鸟也可以叫。很明显,前者相当于所说的是抽象类,而后者指的就是接口.原创 2020-11-04 19:08:07 · 2484 阅读 · 1 评论 -
C# 子类父类相互转换(里氏转换原则)
https://blog.youkuaiyun.com/TheBestAge/article/details/80289901https://blog.youkuaiyun.com/houyanhua1/article/details/78745582?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.pc_relevant_is_cache&depth_1-utm_source=distribute.p.原创 2020-11-04 16:46:12 · 9726 阅读 · 0 评论 -
C#中“接口不单可以作用于引用类型,也可以作用于值类型“
接口不单可以作用于引用类型,也可以作用于值类型。而抽象类来说,只能作用于引用类型#接口可以作用于结构体(struct),结构体是值类型; public struct Book:IComparable, IFormattable { public string Name { get; set; } public int CompareTo(object obj) { throw new NotImplement..原创 2020-10-29 18:55:17 · 300 阅读 · 0 评论 -
Asp.Net 获取客户端真实IP方法总结
文章目录#需求场景#HTTP协议头: REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR#简单了解#具体情况分析1、没有使用代理服务器的情况:2、使用透明代理服务器的情况:Transparent Proxies3、使用普通匿名代理服务器的情况:Anonymous Proxies4、使用欺骗性代理服务器的情况:Distorting Proxies5、使用高匿名代理服务器的情况:High Anonymity Proxies (Elite proxies)#Asp.Ne原创 2020-07-04 16:56:20 · 1850 阅读 · 0 评论 -
C# 中英文符号互转(半角全角互转)
#半角转全角 /// <summary> /// 半角转全角 /// 半角空格为32,全角空格为12288 /// 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 /// </summary> /// <param name="input">输入包含半角字符的字符串</param> /// <ret.原创 2020-06-23 15:06:14 · 1203 阅读 · 0 评论 -
调用webservice接口,报错:(十六进制值0x01)是无效的字符。
文章目录#事故现场#分析#解决方法#事故现场调用webservice接口,报错:(十六进制值0x01)是无效的字符。如图:意思是webservice返回的信息中包含无效的字符,无法解析成xml;#分析使用postman向webservice发送请求,请求成功,返回了数据,但在数据中发现了一些莫名其妙的字符,如图:因数据来源数据库,故去数据库中查询,果然又发现,如图:将异常文本复制到notepad++中,显示的是:SOHSOH是ASCII中的控制字符,start of headin原创 2020-06-13 20:15:00 · 1541 阅读 · 0 评论 -
C#使用dynamic报错: 缺少编译器要求的成员“Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create”
#事故现场示例代码: using (var client = new WebClient() { Encoding = Encoding.UTF8 }) { var result = client.DownloadString(url); dynamic obj = JsonConvert.DeserializeObject<dynamic>(res.原创 2020-06-05 18:52:21 · 9799 阅读 · 3 评论 -
C# Dictionary 遍历删除
foreach (var item in dictionary.ToList()) { if (item.Key.Equals(100)) { dictionary.Remove(item.Key); }}原创 2020-06-01 20:24:12 · 3222 阅读 · 0 评论 -
C#通过属性名字符串获取对象属性值、设置属性值
文章目录#通过反射获取对象属性值并设置属性值0、定义一个类1、通过属性名(字符串)获取对象属性值2、通过属性名(字符串)设置对象属性值#获取对象的所有属性名称及类型#判断对象是否包含某个属性#通过反射获取对象属性值并设置属性值0、定义一个类 public class User { public int Id { get; set; } pub...原创 2020-01-15 21:25:34 · 3828 阅读 · 0 评论 -
C#使用WebClient时,如果状态码不为200时,如何获取请求返回的内容
文章目录一、事故现场二、解决方法一、事故现场使用WebClient发送请求,如果返回的状态码不是2xx或3xx,那么默认情况下会抛出异常,那如何才能获取到请求返回的内容呢?二、解决方法可以通过try catch获取到WebException类型的异常;api接口: [HttpGet("test")] public ActionResult test() { ...原创 2019-12-21 23:36:02 · 1829 阅读 · 0 评论 -
C#实现在foreach遍历中删除集合中的元素(方法总结)
文章目录方法一:采用for循环,并且从尾到头遍历方法二:使用递归方法三:通过泛型类实现IEnumerator在foreach中删除元素时,每一次删除都会导致集合的大小和元素索引值发生变化,从而导致在foreach中删除元素时会抛出异常。集合已修改;可能无法执行枚举操作。方法一:采用for循环,并且从尾到头遍历如果从头到尾正序遍历删除的话,有些符合删除条件的元素会成为漏网之鱼;正...原创 2019-12-16 21:59:07 · 3549 阅读 · 0 评论 -
C# LINQ Join两个表连接,关联多个条件的写法
文章目录1、sql语句:2、linq写法:1、sql语句:select * from Users u join Teachers t on u.UserID==t.TeacherID and u.Name=t.Name2、linq写法:1)、方法一:var userInfos = from u in db.Users join t in db.Teachers on ne...原创 2019-11-16 17:33:09 · 13331 阅读 · 0 评论 -
'命名空间"xxx"中不存在类型或命名空间名"xx"(是否缺少程序集引用)'-异常报错的原因
1、事故现场编程语言:C#编辑器:VS2019事故上下文:有三个程序集项目Resource.DAL、Resource.DTO和Resource.Utility,DAL引用了DTO和Utility,DTO和Utility独立生成都没有问题,但是DAL生成的时候出现了很多报错,如图:从报错上看,就是DAL引用DTO和Utility没有成功,但是,DTO和Utility两个程序集单独生成...原创 2019-10-12 17:13:18 · 3851 阅读 · 0 评论 -
"One or more types required to compile a dynamic expression cannot be found. ..." 的解决方法
#事故现场: 在一个.net 4.0 的项目中使用dynamic,示例代码如下:private static void Main(string[] args){ dynamic obj; obj = new { name = "jack" }; Console.WriteLine(obj.name);} 在读取obj.name时,报错:One o...原创 2019-05-26 15:28:30 · 516 阅读 · 0 评论 -
【C#】C#中的HtmlEncode与HtmlDecode:HttpUtility.HtmlEncode,Server.HtmlEncode,WebUtility.HtmlEncode
HtmlEncode(String)将字符串转换为 HTML 编码字符串。 HtmlDecode(String)将已经为 HTTP 传输进行过 HTML 编码的字符串转换为已解码的字符串。 在web端项目中通常使用HttpUtility.HtmlEecode,HttpUtility.HtmlDecode,Server.HtmlEncode,Server.HtmlDecode;...原创 2019-06-06 23:19:13 · 4167 阅读 · 0 评论 -
C# Winform程序防止多开的方法总结(亲测)
1、Winform启动的时候,检测是否存在同样的进程名,防止程序多开; static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() ...原创 2019-06-12 12:34:49 · 4035 阅读 · 2 评论 -
.Net防sql注入的方法总结
#防sql注入的常用方法:1、服务端对前端传过来的参数值进行类型验证;2、服务端执行sql,使用参数化传值,而不要使用sql字符串拼接;3、服务端对前端传过来的数据进行sql关键词过来与检测;#着重记录下服务端进行sql关键词检测:1、sql关键词检测类: public class SqlInjectHelper:System.Web.UI.Page {...原创 2019-06-22 19:03:13 · 2799 阅读 · 0 评论 -
C# 获取本地的内网(局域网)和外网(公网)IP地址的方法
1、获取本机的IP地址集合: /// <summary> /// 获取本机所有ip地址 /// </summary> /// <param name="netType">"InterNetwork":ipv4地址,"InterNetworkV6":ipv6地址</param> ...原创 2019-06-18 18:12:05 · 4984 阅读 · 0 评论 -
C#中char[]与string之间的转换;byte[]与string之间的转化
1、char[]与string之间的转换//string 转换成 Char[]string str="hello";char[] arr=str.ToCharArray();//Char[] 转换成 stringstring str1 = new string(arr);2、byte[]与string之间的转化在这里插入代码片...原创 2019-07-16 21:59:04 · 1026 阅读 · 0 评论 -
ASP.NET登录验证码解决方案
文章目录#验证码效果图#代码0、html代码1、Handler中调用验证码生成类2、验证码图片绘制生成类3、高斯模糊算法类#参考#注意在web项目中,为了防止登录被暴力破解,需要在登录的时候加入验证码验证,思路是:1)登录页面打开,向 服务端请求生成验证码图片,并将验证码字符串存入session;2)登录时将客户端输入的验证码字符串传到服务端进行比较,如果验证码正确,再进行登录验证;#...原创 2019-07-23 21:49:27 · 816 阅读 · 0 评论 -
C#读取匿名对象的属性值的方法总结
文章目录1、通过反射的方式获取属性值2、新建个扩展方法,将object转成对应的匿名对象通过new出匿名对象,可以直接调用该匿名对象的属性名,获取属性值。var objUser = new {Name="Lilei",Age=18 };//此时可直接读取匿名类属性Console.WriteLine("Name:" + objUser.Name);// Name:Lilei但当将匿名对...原创 2019-07-17 22:09:43 · 1973 阅读 · 0 评论 -
C# 委托(delegate)、泛型委托和Lambda表达式
# 什么是委托1、从数据结构来讲,委托是和类一样是一种用户自定义类型。2、委托是方法的抽象,它存储的就是一系列具有相同参数和返回类型的方法的地址。调用委托的时候,委托包含的所有方法将被执行。# 委托声明、实例化和调用1、声明委托是一种特殊的类,因此委托的声明与类的声明方法类似,在任何可以声明类的地方都可以声明委托。委托声明用delegate关键字,同时委托要指明方法参数和返回值,写法与方...原创 2019-07-31 22:26:36 · 316 阅读 · 0 评论 -
asp.net ashx处理程序中switch case的替代方案总结
在开发 asp.net 项目中,通常使用一般处理程序(ashx)处理前端发送过来的请求,因为一个handler会处理多个请求,故ajax请求中一般都会加一个action的参数,在handler里根据这个action做相应的处理或返回相应的数据,这里大多数人都会想到用switch…case做判断,一开始我也是用的switch,但渐渐地发现,每个case不像一个代码块,不能为其中的变量提供一个独立的作...原创 2019-08-01 22:09:23 · 489 阅读 · 0 评论 -
ASP.NET Web项目发布选项:“允许更新此预编译站点” 详解
#使用visual studio 发布web项目我们使用visual studio 可以通过如下的方法发布web网站:在打开的对话框中,有一个选项至关重要,那就是:“允许更新此预编译站点”...原创 2019-08-07 17:24:45 · 878 阅读 · 0 评论 -
Visual Studio 2019 远程调试工具(Remote Debugger)使用方法
文章目录0、Visual Studio 2019 远程调试工具使用场景1、Visual Studio 2019 远程调试工具下载地址:2、Visual Studio 2019 远程调试工具-安装及运行3、代码远程调试0、Visual Studio 2019 远程调试工具使用场景当项目在测试环境上有bug,需要运行代码调试一下,这时就需要在测试环境上安装一个调试工具,然后在本地运行代码,远程链...原创 2019-08-28 21:35:21 · 30332 阅读 · 0 评论 -
【C#】List按指定字段的给出的自定义顺序进行排序
#引言有一个集合,对其进行排序,排序规则为:按对象中某个字段的特定顺序进行排序,比如:对象属性id,按照【4,2,5,1】的顺序排序;#代码:public class Foo{ public int Id { get; set; } public string Name { get; set; }}1、demo1:按字段id进行自定义排序 Lis...原创 2019-04-29 17:33:07 · 3818 阅读 · 0 评论