Tag: compiler errors

无法创建通用方法:找不到“T”

我试图实现一个返回通用列表(List)的方法,但我不断收到此错误消息: 找不到类型或命名空间名称’T’(您是否缺少using指令或程序集引用?) 这是我的方法代码: public static List doQuery(string query) { SQLiteCommand com = new SQLiteCommand(query, SQLiteManager.connection); SQLiteDataReader reader = com.ExecuteReader(CommandBehavior.Default); while (reader.Read()) { //other code } } 为什么在这种情况下T不被识别为通用类型?

C#条件运算符错误只有赋值,调用,递增,递减,等待和新对象表达式才能用作语句

嗨,我正在编写一个基本程序来查找输入数字是否为素数。 我有一个checkPrime(num)函数检查素数,如果num是prime则返回true ,else返回false 。 现在在我的main()函数中,我使用条件运算符来缩短代码但是我收到一个我不确定的错误。 以下是我的代码: static void Main(String[] args) { int n = Int32.Parse(Console.ReadLine()); while (n– > 0) { int num = Int32.Parse(Console.ReadLine()); (checkPrime(num) == true) ? Console.WriteLine(“Prime”) : Console.WriteLine(“Not Prime”); } } 当我编译时,我得到错误,因为Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement在条件语句行的while循环中Only assignment, call, increment, decrement, await, […]

Dictionary初始化中KeyNotFoundException的原因

以下代码 new Dictionary<string, List> { [“a”] = {1}, }; 抛出一个运行时KeyNotFoundException ,虽然{1}是一个格式完美的数组(即int[] a = {1,2,3,4}是有效代码)。 将Dictionary的TValue更改为int[] ,抛出编译时CS1061 ,但这不会(注意添加的new[]数组分配): new Dictionary<string, IEnumerable> { [“a”] = new[]{1}, }; 为什么会这样?

即使我分配变量,“使用未分配的局部变量”错误?

在下面的示例中,编译器生成错误“使用未分配的局部变量r ”,即使我在使用它之前在循环中分配变量。 为什么编译器会生成此错误? static void Main(string[] args) { float r; for (int i = 0; i < 100; i++) r = i; // assigned here Console.WriteLine(r); // error: use of unassigned local variable }

XAML无法编译,但没有任何错误消息,如果用户定义的对象是第一个资源,则紧跟x:Array资源

我发现这个问题很奇怪,可能是一个XAML / Visual Studio错误。 我希望其他人发现它不那么奇怪,并且解释为什么我正在做的事情是错误的,和/或更好的解决方法,而不仅仅是以不同的顺序声明资源。 我有这个简单的XAML: 0.25 当我尝试编译项目时,我收到以下错误: 1> … MainWindow.xaml.cs(25,13,​​25,32):错误CS0103:当前上下文中不存在名称“InitializeComponent” 我理解错误的含义,但不是为什么会发生错误。 XAML看起来很好,编译它没有错误,但由于某种原因,通常不会创建或使用InitializeComponent()的自动生成的.gics文件(即使文件来自之前的成功编译) ,它仍然没有编译到程序集中)。 如果我只是颠倒资源的顺序,它工作正常: 0.25 附加信息: A是我项目中的任何类。 出于此测试的目的,它被声明为class A { } ,即一个空类,但我首先遇到了将转换器实例放入资源的问题。 如果我使用内置类型而不是A ,例如Some string ,则不会发生错误。 如果我将一个内置类型的对象作为资源放在用户定义的类型A对象和我的数组资源对象之间, 它也可以正常工作 ! 换句话说,似乎有一个或多个用户定义的类型对象作为第一个资源元素,紧接着是一个数组对象,导致编译失败。 其他组合似乎工作得很好。 有人可以解释为什么这是预期的行为(除了重新安排我的资源,我应该做些什么来避免它),或者确认我认为这是XAML构建过程中的错误并不是完全疯了? 编辑: 鉴于这可能是一个真正的错误,我继续在这里打开一个Connect错误报告: https : //connect.microsoft.com/VisualStudio/feedback/details/1441123/xaml-fails-to-compile-without-error -if用户自定义对象-是先资源和-随后-立即逐-X-arrays资源 另请参阅相关/类似的Stack Overflow问题: 当前上下文中不存在名称“InitializeComponent”:奇怪的行为 编辑#2: WPF更新了Connect报告(参见上面的链接),声明该bug的修复程序将在下一版本的.NET中发布: Sachin [MSFT]于2016年3月9日下午3:53发布 WPF团队已经审查了这个问题,并在下一版本的.NET中修复。 我们感谢您的反馈,并考虑解决此问题 – WPF团队

使用不是管理员组成员的用户登录时无法加载文件或程序集“Microsoft.CSharp”

我创建了一个网站,当我使用管理员登录时成功编译,但是当我使用任何其他用户登录时,会发生以下错误。 无法加载文件或程序集“Microsoft.CSharp,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”或其依赖项之一。 未提供所需的模拟级别,或者提供的模拟级别无效。 (HRESULTexception:0x80070542) 管理员用户是。的成员 Acronis远程用户 管理员 远程桌面用户 而另一个用户是其中的成员 Acronis远程用户 管理员* IIS_IUSRS 远程桌面用户 SQLServerMSSQLUser $ VM-TMP-ABCD-1 $ MSSQLSERER 用户 我在用 具有64位操作系统的Windows Server 2008 R2 Enterprise 最初,其他用户不属于管理员组。 我添加了管理员角色,但我仍然遇到同样的错误。 注意:如果我选择VS2010 作为管理员运行,它会成功编译网站。

三元条件下的隐式转换问题

可能重复: 条件运算符不能隐式转换? 为什么null需要显式类型转换? 我有一个搜索,并没有找到一个很好的解释为什么以下发生。 我有两个具有共同接口的类,我尝试使用三元运算符初始化此接口类型的实例,如下所示,但无法编译错误“无法确定条件表达式的类型,因为之间没有隐式转换’xxx.Class1’和’xxx.Class2’: public ConsoleLogger : ILogger { …. } public SuppressLogger : ILogger { …. } static void Main(string[] args) { ….. // The following creates the compile error ILogger logger = suppressLogging ? new SuppressLogger() : new ConsoleLogger(); } 如果我明确地将第一个conditioin强制转换为我的界面,这是有效的: ILogger logger = suppressLogging ? ((ILogger)new SuppressLogger()) : new ConsoleLogger(); 显然我总能做到这一点: […]

编译错误。 使用带有struct的属性

请解释struct构造函数的以下错误。 如果我将struct更改为class,那么错误就会消失。 public struct DealImportRequest { public DealRequestBase DealReq { get; set; } public int ImportRetryCounter { get; set; } public DealImportRequest(DealRequestBase drb) { DealReq = drb; ImportRetryCounter = 0; } } 错误CS0188:在分配所有字段之前,不能使用“this”对象 错误CS0843:在将控制权返回给调用者之前,必须完全分配自动实现的属性“DealImportRequest.DealReq”的备份字段。 考虑从构造函数初始化程序中调用默认构造函数。

公共静态字符串MyFunc()上的“预期的类,委托,枚举,接口或结构”错误。 什么是“字符串”的替代品?

我尝试使用以下静态函数时收到错误。 错误: 预期的类,委托,枚举,接口或结构 function(和类): namespace MyNamespace { public class MyClass { // Some other static methods that use Classes, delegates, enums, interfaces, or structs public static string MyFunc(string myVar){ string myText = myVar; //Do some stuff with myText and myVar return myText; } } } 这导致编译器愤怒地(红色)为public static string的字符串部分加下划线。 所以,我认为这意味着string不是类,委托,枚举,接口或结构。 我可以使用什么而不是string来返回字符串或类似字符串的对象? 在C#中似乎没有String (大写字母S)类。 编辑 :括号与某些注释代码不匹配 – […]

在存储库中使用Include()方法

我在EF 5中有以下内容: var a = context.Posts.Include(x => x.Pack).Select(x => x.Pack.Id).ToList(); 这很有效。 然后我尝试在我的通用存储库中复制它: public IQueryable Include(Expression<Func> criteria) where T : class { return _context.Set().Include(criteria); } 但在这种情况下,我无法执行以下操作: var b = repository.Include(x => x.Pack).Select(x => x.Pack.Id).ToList(); 我收到错误: 无法将类型’Data.Entities.Pack’隐式转换为’bool’ 我怎么解决这个问题? 我应该在Include()方法中更改什么?