[英]How to solve error does not contain a definition for - new to C#
我在 nodejs/typescript 编程后开始学习 c#。
我遇到了以下错误:
TypeTests.cs(22,50):错误 CS1061:“书”不包含“名称”的定义,并且找不到接受“书”类型的第一个参数的可访问扩展方法“名称”(您是否缺少使用指令或程序集引用?)
这是我的班级
using System;
using System.Collections.Generic;
namespace GradeBook
{
public class Book
{
// this is how we generate a constructor in c#
public Book(string name)
{
grades = new List<double>();
Name = name;
}
public void AddGrade(double grade)
{
grades.Add(grade);
Console.WriteLine($"A new added grade: {grade:N2}");
}
public Stats GetStats()
{
var result = new Stats();
result.Average = 0.0;
result.High = double.MinValue;
result.Low = double.MaxValue;
foreach (var grade in grades)
{
// log hightest grades
result.High = Math.Max(grade, result.High);
// log lowest grades
result.Low = Math.Min(grade, result.Low);
result.Average += grade;
}
result.Average /= grades.Count;
return result;
}
// its no longer a variable it is now called field in c#
private List<double> grades;
public string Name;
}
}
我的测试班:
using System;
using Xunit;
namespace GradeBook.tests
{
/*
// Guideline to writing good unit tests:
// arrange the test
// act - the actual actions
// assert - the values that are computed in the act section
*/
public class TypeTests
{
[Fact]
public void CSharpIsPassByValue()
{
// arrange
var book1 = GetBook("My Book");
GetBookSetName(book1, "New Book Name!");
//assert
Assert.Equal("My Book", book1.name);
}
private void GetBookSetName(Book book, string name)
{
book = new Book(name);
}
[Fact]
public void CanSetNameFromReference()
{
// arrange
var book1 = GetBook("My Book");
SetName(book1, "New Book Name!");
//assert
Assert.Equal("New Book Name!", book1.name);
}
private void SetName(Book book, string name)
{
book.Name = name;
}
[Fact]
public void GetBookReturnsDifferentObjects()
{
// arrange
var book1 = GetBook("My Book");
var book2 = GetBook("My Other Book");
//assert
Assert.Equal("My Book", book1.name);
Assert.Equal("My Other Book", book2.name);
Assert.NotSame(book1, book2);
}
[Fact]
public void TwoVarsCanReferenceSameObject()
{
var book1 = GetBook("Book 1");
var book2 = book1;
Assert.Same(book1, book2);
Assert.True(Object.ReferenceEquals(book1, book2));
}
Book GetBook(string name)
{
return new Book(name);
}
}
}
字段名称在 C# 中区分大小写,因此在这一行中:
Assert.Equal("My Book", book1.name);
name
应该是Name
:
Assert.Equal("My Book", book1.Name);
您的代码中实际上有几个地方需要更正。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.