Tag: C#的

指针指向int的增量值

我有一个int指针(int * count),如果我想增加指向使用++的整数,我想我会打电话 *count++; 但是,我正在构build警告“expression式结果未使用”。 我可以打电话 *count += 1; 但是,我想知道如何使用++。 有任何想法吗?

从“System.Int32”转换为“System.Nullable`1 ]无效

Type t = typeof(int?); //will get this dynamically object val = 5; //will get this dynamically object nVal = Convert.ChangeType(val, t);//getting exception here 在上面的代码中,我得到了InvalidCastException。 对于上面,我可以简单地写int? nVal = val int? nVal = val ,但上面的代码是dynamic执行的。 我得到一个包含在一个对象(这里为val)的值(非空types,如int,float等),我必须将其保存到另一个对象,通过将其转换为另一个types(可以或不可以为空) )。 什么时候 从“System.Int32”到“System.Nullable`1 [[System.Int32,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]的转换无效。 一个int ,应该是可转换/可types转换为nullable int ,这里有什么问题?

D的语法真的是上下文吗?

我已经在几个月前在D新闻组上发布了这个消息,但是由于某种原因,答案从来没有真正让我信服,所以我想我会在这里问。 D的语法显然是上下文无关的 。 但是,C ++的语法不是(即使没有macros)。 ( 请仔细阅读! ) 现在被授予, 我对编译器,词法分析器和parsing器一无所知 (正式)。 我所知道的是从我在网上学到的东西。 以下是我所了解的关于上下文的一些(我相信),用不太专业的术语: 语言的语法是上下文无关的, 当且仅当你总是可以理解给定代码段的含义(尽pipe不一定是确切的行为),而不需要在其他地方“看”。 或者,更不严格的是: 如果我需要的话,语法不能是上下文无关的,我只是通过查看它不能告诉expression式的types。 因此,例如,C ++由于confusing<sizeof(x)>::q < 3 > (2)的含义 取决于q的值 ,因此上下文无关testing失败。 到现在为止还挺好。 现在我的问题是:D可以这样说吗? 在D中,哈希表可以通过Value[Key]声明创build,例如 int[string] peoplesAges; // Maps names to ages 静态数组可以用类似的语法来定义: int[3] ages; // Array of 3 elements 和模板可以用来使他们感到困惑: template Test1(T…) { alias int[T[0]] Test; } template Test2(U…) { alias […]

5次错误后如何指示GCC停止?

是否有可能指示GNU c + +编译器发现5错误后停止? 在文档中找不到这个。 提前致谢。

何时使用C#/ .NET中的指针?

我知道C#让程序员能够访问,在不安全的上下文中使用指针。 但是,这是什么时候需要? 在什么情况下,使用指针变得不可避免? 仅仅是出于性能的原因? 另外,为什么C#通过不安全的上下文来暴露这个function,并从中删除所有的pipe理优势? 在理论上是否可以使用指针而不会失去托pipe环境的优点?

何时使用shared_ptr以及何时使用原始指针?

class B; class A { public: A () : m_b(new B()) { } shared_ptr<B> GimmeB () { return m_b; } private: shared_ptr<B> m_b; }; 比方说,B是一个在语义上不应该存在于A的生命周期之外的类,也就是说,B本身是完全没有意义的。 GimmeB应该返回一个shared_ptr<B>或B*吗? 一般来说,完全避免使用C ++代码中的原始指针代替智能指针是一种很好的做法吗? 我认为shared_ptr应该只在明确的所有权转移或共享时才使用,除了函数分配一些内存,填充一些数据并返回它的情况之外,我认为这是很less见的,主叫方和被叫方之间的理解是,前者现在对这些数据负责。

多重集合,地图和哈希映射的复杂性

我想知道在STL multiset,map和hash map类的Big O符号中的复杂性: 插入条目 访问条目 检索条目 比较条目

在C#中是什么意思?

在entity framework的源代码( 链接 ),我发现这一行: public virtual IRelationalTransaction Transaction { get; [param: NotNull] protected set; } [param: NotNull]部分对我来说很陌生。 任何想法是什么样的C#语法是这样的? 我熟悉属性和参数,但不是这个组合。 NotNull的定义是这样的: [AttributeUsage( AttributeTargets.Method | AttributeTargets.Parameter | AttributeTargets.Property | AttributeTargets.Delegate | AttributeTargets.Field)] internal sealed class NotNullAttribute : Attribute { } 我期望将其用作[NotNull]但是在这里做什么呢?

使用SqlCommandasynchronous方法时性能糟糕

在使用asynchronous调用时,我遇到了主要的SQL性能问题。 我创build了一个小案例来演示这个问题。 我已经创build了一个数据库驻留在我们的局域网(所以不是一个localDB)的SQL Server 2016年。 在那个数据库中,我有一个WorkingCopy表,包含两列: Id (nvarchar(255, PK)) Value (nvarchar(max)) DDL CREATE TABLE [dbo].[Workingcopy] ( [Id] [nvarchar](255) NOT NULL, [Value] [nvarchar](max) NULL, CONSTRAINT [PK_Workingcopy] PRIMARY KEY CLUSTERED ([Id] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 在该表中,我插入了一条logging( id […]

std :: tie如何工作?

我已经使用std::tie没有太多的考虑。 它的工作,所以我刚刚接受: auto test() { int a, b; std::tie(a, b) = std::make_tuple(2, 3); // a is now 2, b is now 3 return a + b; // 5 } 但是这个黑魔法是如何工作的? 如何由std::tie创build一个临时变更a和b ? 我觉得这更有趣,因为它是一个图书馆function,而不是一个语言function,所以肯定是我们可以实现自己和理解的东西。