草庐IT

c# - C#的隐藏特性?

coder 2023-07-06 原文

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果你觉得这个问题可以改进并可能重新打开,visit the help center 寻求指导。




9年前关闭。










锁定。这个问题及其答案是 locked,因为这个问题是题外话但具有历史意义。它目前不接受新的答案或互动。








在我从 this question 了解到以下内容后,我想到了这一点:

where T : struct

我们,C# 开发人员,都知道 C# 的基础知识。我的意思是声明、条件、循环、运算符等。

我们中的一些人甚至掌握了诸如 Genericsanonymous typeslambdasLINQ 、...

但是,即使是 C# 爱好者、瘾君子、专家也几乎不知道的 C# 最隐藏的特性或技巧是什么?

以下是迄今为止已揭示的功能:

关键词
  • yield Michael Stum
  • varMichael Stum
  • using() 语句 kokos
  • readonlykokos
  • asMike Stone
  • as/isEd Swangren
  • as/is(改进)由 Rocketpants
  • defaultdeathofrats
  • global::pzycoman
  • using()AlexCuse
  • volatileJakub Šturc
  • extern aliasJakub Šturc

  • 属性
  • DefaultValueAttribute Michael Stum
  • ObsoleteAttribute DannySmurf
  • DebuggerDisplayAttribute Stu
  • DebuggerBrowsable DebuggerStepThrough bdukes
  • ThreadStaticAttribute marxidad
  • FlagsAttribute Martin Clarke
  • ConditionalAttribute AndrewBurns

  • 句法
  • ?? (合并空值)运算符由 kokos
  • Nick Berardi
  • 的数字标记
  • where T:newLars Mæhlum
  • Keith
  • 的隐式泛型
  • Keith
  • 的单参数 lambda
  • 自动属性 ​​Keith
  • 命名空间别名 Keith
  • 逐字字符串文字,@ by Patrick
  • enum 值由 lfoust
  • @variablenames by marxidad
  • event 运算符 marxidad
  • 通过 Portman
  • 格式化字符串括号
  • xanadont
  • 的属性访问器可访问性修饰符
  • 条件(三元)运算符 ( ?: ) by JasonS
  • checkedunchecked 运算符由 Binoj Antony
  • implicit and explicit 运算符 Flory

  • 语言特点
  • 可空类型 Brad Barker
  • 匿名类型 Keith
  • __makeref __reftype __refvalueJudah Himango
  • 对象初始值设定项由 lomaxx
  • David in Dakota
  • 格式化字符串
  • 扩展方法 marxidad
  • partial 方法 Jon Erickson
  • 预处理器指令 John Asbeck
  • DEBUG 预处理器指令 Robert Durgin
  • 运算符重载 SefBkn
  • chakrit
  • 的类型推断
  • bool 运算符 taken to next level by Rob Gough
  • 通过 Roman Boiko
  • 不装箱将值类型变量作为接口(interface)传递
  • 通过 Roman Boiko
  • 以编程方式确定声明的变量类型
  • 静态构造函数 Chris
  • 通过 roosteronacid
  • 使用 LINQ 更容易看清/浓缩 ORM 映射
  • __arglistZac Bowling

  • Visual Studio 功能
  • 通过 Himadri
  • 在编辑器中选择文本块
  • 片段 DannySmurf

  • 框架
  • TransactionScopeKiwiBastard
  • DependantTransactionKiwiBastard
  • Nullable<T>IainMH
  • MutexDiago
  • System.IO.Pathageektrapped
  • WeakReferenceJuan Manuel

  • 方法和属性
  • String.IsNullOrEmpty() 方法 KiwiBastard
  • List.ForEach() 方法 KiwiBastard
  • BeginInvoke() , EndInvoke() 方法 Will Dean
  • Nullable<T>.HasValueNullable<T>.Value 属性由 Rismo
  • GetValueOrDefault 方法 John Sheehan

  • 提示与技巧
  • 事件处理程序的好方法 Andreas H.R. Nilsson
  • 大写比较 John
  • 无反射访问匿名类型 dp
  • 一种通过 Will
  • 延迟实例化集合属性的快速方法
  • roosteronacid
  • 类似 JavaScript 的匿名内联函数

    其他
  • 网络模块由 kokos
  • LINQBridgeDuncan Smart
  • Parallel ExtensionsJoel Coehoorn
  • 最佳答案

    这不是 C# 本身,但我还没有看到有人真正使用 System.IO.Path.Combine()到他们应该的程度。其实整个Path类真的很有用,但是没有人使用它!

    我敢打赌每个生产应用程序都有以下代码,即使它不应该:

    string path = dir + "\\" + fileName;
    

    关于c# - C#的隐藏特性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9033/

    有关c# - C#的隐藏特性?的更多相关文章

    1. c# - 如何在 ruby​​ 中调用 C# dll? - 2

      如何在ruby​​中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL

    2. C# 到 Ruby sha1 base64 编码 - 2

      我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha

    3. 基于C#实现简易绘图工具【100010177】 - 2

      C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

    4. Ruby隐藏与覆盖 - 2

      我刚刚了解到,在Java中,覆盖和隐藏之间是有区别的(静态方法是隐藏的,而不是覆盖),这意味着Java使用早期绑定(bind)和后期绑定(bind)。是否有与方法隐藏类似的东西,或者它只是具有方法重写? 最佳答案 Java具有三种不同的“方法”:实例方法,静态方法和构造函数。Ruby只有一个:实例方法。在Java中,静态方法的行为必须不同于实例方法,因为类不是对象。它们没有类,因此也没有父类(superclass),因此没有要覆盖的内容。在Ruby中,类与其他任何对象一样都是对象,它们具有一个类,该类可以具有父类(superclas

    5. c# - C# 中的 Flatten Ruby 方法 - 2

      我如何做Ruby方法"Flatten"RubyMethod在C#中。此方法将锯齿状数组展平为一维数组。例如:s=[1,2,3]#=>[1,2,3]t=[4,5,6,[7,8]]#=>[4,5,6,[7,8]]a=[s,t,9,10]#=>[[1,2,3],[4,5,6,[7,8]],9,10]a.flatten#=>[1,2,3,4,5,6,7,8,9,10 最佳答案 递归解决方案:IEnumerableFlatten(IEnumerablearray){foreach(variteminarray){if(itemisIEnume

    6. ruby - 可以像在 C# 中使用#region 一样在 Ruby 中使用 begin/end 吗? - 2

      我最近从C#转向了Ruby,我发现自己无法制作可折叠的标记代码区域。我只是想到做这种事情应该没问题:classExamplebegin#agroupofmethodsdefmethod1..enddefmethod2..endenddefmethod3..endend...但是这样做真的可以吗?method1和method2最终与method3是同一种东西吗?还是有一些我还没有见过的用于执行此操作的Ruby惯用语? 最佳答案 正如其他人所说,这不会改变方法定义。但是,如果要标记方法组,为什么不使用Ruby语义来标记它们呢?您可以使用

    7. c# - Ruby 等效于 C# Linq 聚合方法 - 2

      什么是Linq聚合方法的ruby​​等价物。它的工作原理是这样的varfactorial=new[]{1,2,3,4,5}.Aggregate((acc,i)=>acc*i);每次将数组序列中的值传递给lambda时,变量acc都会累积。 最佳答案 这在数学以及几乎所有编程语言中通常称为折叠。它是更普遍的变形概念的一个实例。Ruby从Smalltalk中继承了这个特性的名称,它被称为inject:into:(像aCollectioninject:aStartValueinto:aBlock一样使用。)所以,在Ruby中,它称为inj

    8. c# - 先学什么? - 2

      关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭8年前。Improvethisquestion几年前我去学校学习编程,毕业后我找到了一份系统管理方面的工作,这就是我职业生涯的方向。我想重新开始某种开发,并且一直在“玩”C#和ASP.NET,但我已经听到很多关于其他"new"语言的讨论(新的意思是它们是新的)我)喜欢Ruby和F#。我想我想知道我是否在浪费时间学习主要的MS语言,而不是成为一名通才。很长一段时间没有离开开发社区(如果我曾经离开过的话)让我在潮流中挣扎,我不想落在时代的

    9. c# - 在 C# 中重现 Ruby OpenSSL private_encrypt 输出 - 2

      我有一个简单的Ruby脚本,我用它在某些HTTPheader上执行private_encrypt以签署要发送到ruby​​RESTAPI的Web请求,该API会根据Base64编码字符串测试Base64编码字符串生成而不是解码Base64和解密数据然后测试原始字符串。我使用的脚本是require"openssl"require"base64"path_to_cert=ARGV[0].dupplain_text=Base64.decode64(ARGV[1].dup)private_key=OpenSSL::PKey::RSA.new(File.read(path_to_cert))pu

    10. ruby-on-rails - Rails 4 真实性 token - 在 header 和表单隐藏输入中? - 2

      我正试图在Rails中获得完整的页面缓存,但我在CSRF方面遇到了很大的障碍——或者可能只是我对它的理解。我目前有form_authenticity_token存储在cookie中的字符串,JS可以使用该cookie访问和重写header标签。我在生成的HTML中有两个地方可以找到标记:1)在头部2)在表单的隐藏输入元素中如前所述,这些哈希值彼此不同(在未启用缓存的开发模式下)。他们为什么不同?为什么我可以删除headmeta标签并保留表单输入并且允许请求​​?然而,当我删除表单输入标签并保留标题时,请求被拒绝了吗?实际上这意味着head标签是无用的,不是吗?我可以将表单输入标签重写为

    随机推荐