where T : struct
Run Code Online (Sandbox Code Playgroud)
我们C#开发人员都知道C#的基础知识.我的意思是声明,条件,循环,运算符等.
我们中的一些人甚至掌握了Generics,匿名类型,lambdas,LINQ等......
但是C#粉丝,瘾君子,专家几乎都不知道C#最隐藏的功能或技巧是什么?
yield
由迈克尔·葡萄汁var
由迈克尔·葡萄汁using()
kokos的声明readonly
由kokosas
由迈克·斯通as
/ is
由埃德Swangrenas
/ is
(改进)由Rocketpantsdefault
由deathofratsglobal::
通过pzycomanusing()
由块AlexCusevolatile
作者:JakubŠturcextern alias
作者:JakubŠturcPython编程语言有哪些鲜为人知但有用的功能?
这个问题之所以存在是因为它具有历史意义,但它不被认为是本网站的一个好的,主题上的问题,所以请不要将它作为证据,你可以在这里提出类似的问题.
总有一些功能在边缘场景中很有用,但正因如此,大多数人都不了解它们.我要求的是教科书通常不会教授的功能.
你知道的是什么?
我知道这听起来像是一个让人尴尬的问题,但让我解释一下我来自哪里.
大学毕业后,我在PHP商店找到了一份工作.我在那里工作了一年半,并且认为我已经学到了所有有关编程的知识.
然后我在一家规模庞大的公司找到了一份单人内部开发工作室,所有工作都在C#中.在我对这个职位的承诺中,我开始阅读大量的博客和书籍,并很快意识到我认为我知道一切都是错的.我学习了单元测试,依赖注入和装饰模式,松散耦合的设计原则,继承辩论的组合等等 - 我仍然非常吸收它.毋庸置疑,我的编程风格在去年完全改变了.
现在我发现自己正在为一个朋友的初创公司做一些编码的PHP项目,我觉得完全受限制而不是用C#编程.让我感到困扰的是,必须通过追加'$ this->'来引用类范围内的所有变量.令我很生气的是,我尝试过的IDE中没有一个具有非常好的智能感知,而且我的SimpleTest单元测试方法必须从"测试"一词开始.令我疯狂的是,动态类型使我无法隐式指定方法所期望的参数类型,并且必须编写switch语句来执行方法重载.我不能忍受你不能拥有嵌套的命名空间,并且必须使用::运算符来调用基类的构造函数.
现在我无意启动PHP与C#的争论,而我的意思是说我确定有些PHP功能我不知道或者知道但是没有正确使用.我被置于我的C#宇宙中,无法看到玻璃碗外面.
所以我问,你最喜欢的PHP功能是什么?你可以做些什么,你不能或在.Net语言中更难?
继续"隐藏的......的特征"模因,让我们分享Ruby编程语言鲜为人知但有用的功能.
尝试用核心Ruby限制这个讨论,没有任何Ruby on Rails的东西.
也可以看看:
(请注意,每个答案只有一个隐藏的功能.)
谢谢
Perl中有哪些非常有用但却深奥的语言功能,你实际上可以用来做有用的工作?
指南:
(这些都来自Corion的回答)
运营商:
++
和一元-
运营商处理字符串m//
运营商的特殊情况引用结构:
语法和名称:
模块,Pragma和命令行选项:
变量:
我知道所有C编译器实现背后都有一个标准,所以应该没有隐藏的功能.尽管如此,我确信所有C开发人员都有他们一直使用的隐藏/秘密技巧.
我已经学习了很多浏览C#的隐藏功能,当我找不到类似于VB.NET的东西时,我感到很惊讶.
那么它的一些隐藏或鲜为人知的特征是什么?
我创建了一个ViewModel,并将其属性绑定到UI上的两个文本框.当我更改first的值并将焦点从文本框中移出但是我没有实现INotifyPropertyChanged 时,另一个文本框的值会发生变化.这是怎么回事?
以下是XAML
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<local:ViewModel />
</Window.DataContext>
<StackPanel>
<TextBox Text="{Binding Name}" />
<TextBox Text="{Binding Name}" />
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
以下是我的ViewModel
class ViewModel
{
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 我是一个系统管理员和网站管理员,而不是开发人员,但有时我开发,包括C#主要使用Winform(以及可选的GTK +).
几个星期前我开始了一个WPF项目,看起来真的很强大,但一开始我觉得自己像一只母鸡找到了一把刀!有这么多差异!
stackoverflow充斥着类似这样的话题,我仔细阅读了一些类似的话:
但是,当有人从Winform开始使用WPF时,他必须注意哪些不同之处?
[编辑]
我一直在试图让一个问题的底部,结合我的组合框的的SelectedItem既然我已经不是成功thusfar我开始寻找方法,以获得更详细的设置调试信息PresentationTraceSources.TraceLevel =高特定绑定.不幸的是,在这样做之后,我在"调试"类别下的"输出"窗口中看不到任何相关项.
我正在使用Visual Studio 2010,我的项目是一个WinForms项目,大量使用interop使用ElementHost来托管WPF内容.目前正在为.NET 3.5构建所有相关项目.任何可能导致我在输出窗口中看到额外跟踪信息的解决方案的想法或建议将不胜感激.
下面是我正在使用的代码片段.
<ComboBox xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase"
SelectedItem="{Binding Path=MyCollection.SelectedItem, Mode=TwoWay, diagnostics:PresentationTraceSources.TraceLevel=High}"
ItemsSource="{Binding MyCollection, diagnostics:PresentationTraceSources.TraceLevel=High}"
SelectedValuePath="Value"
DisplayMemberPath="Value.DisplayName" />
Run Code Online (Sandbox Code Playgroud) 这可能是我所缺少的简单的东西。是否可以将按钮内容设置为绑定,同时仍然在设计器中显示一些默认文本?
前任。<Button Content="{Binding buttonContent}"/>
绑定工作正常,但在设计器中按钮内容只是空白。我们希望它在设计器中显示一些文本,例如“开始”。