擴(kuò)展出現(xiàn)問題
static class PetGuide
?{
? ? ? ? ? ? static public void HowToFeedDog(this Dog dog)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Console.WriteLine("Play a video about how to feed a dog.");
? ? ? ? ? ? }
?}
HowToFeedDog提示:擴(kuò)展方法必須在頂級(jí)靜態(tài)類中定義;PetGuide是嵌套類
運(yùn)行語句Dog dog=new Dog("Tommy");
?????????????dog.后沒有出現(xiàn)HowToFeedDog
前面的代碼目前沒有出現(xiàn)錯(cuò)誤,感謝回答!
2018-01-27
嵌套類,這個(gè)是一個(gè)內(nèi)部類,所以無法訪問??赡苁菦]注意相關(guān)括號(hào)的作用域,仔細(xì)檢查一下。把他定義在外面。
2022-05-06
我也遇到了,需要把類直接放在?class Program{}的外面,然后通過智能提示補(bǔ)全dog類的引用就可以了
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
? ? class Program
? ? {
? ? ? ? //結(jié)構(gòu)
? ? ? ? struct fish {
? ? ? ? ? ? int size;
? ? ? ? ? ? int weight;
? ? ? ? ? ? int type;
? ? ? ? }
? ? ? ? interface jieko{
? ? ? ? ? ? void chatchMoutc();//接口中默認(rèn)是public,但不能加修飾符,且也不能在接口中實(shí)現(xiàn)
? ? ? ? }
? ? ? ? interface upTree {
? ? ? ? ? ? void upTrees();
? ? ? ? }
? ? ? ? static void Main(string[] args)
? ? ? ? {
? ? ? ? ? ? pet[] pets = new pet[] { new dog("小黑"),new cat("小密"),new dog("大黃"), };
? ? ? ? ? ? for (var i =0;i<pets.Length;i++) {
? ? ? ? ? ? ? ? pets[i].spicking();
? ? ? ? ? ? ? ??
? ? ? ? ? ? }
? ? ? ? ? ? dog dog1 = new dog("小九");
? ? ? ? ? ? dog1.PetGuide();
? ? ? ? ? ? dog.showDogNume();
? ? ? ? ? ? //pet dog = new dog();
? ? ? ? ? ? //dog._name = "小黑";
? ? ? ? ? ? //dog.printName();
? ? ? ? ? ? //pet cat = new cat();
? ? ? ? ? ? //cat._name = "小密";
? ? ? ? ? ? //cat.printName();
? ? ? ? ? ? //dog.spicking();
? ? ? ? ? ? //cat.spicking();
? ? ? ? ? ? cat cat = new cat("小密");
? ? ? ? ? ? upTree utree = cat;
? ? ? ? ? ? cat.upTrees();
? ? ? ? ? ? utree.upTrees();
? ? ? ? ? ? jieko chatct = cat;
? ? ? ? ? ? cat.chatchMoutc();
? ? ? ? ? ? chatct.chatchMoutc();
? ? ? ? ? ? Console.ReadKey();
? ? ? ? ? ??
? ? ? ? }
? ? ? ? abstract public class pet{
? ? ? ? ? protected string _name;
? ? ? ? ? ? public pet(string Name)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? _name = Name;
? ? ? ? ? ? }
? ? ? ? ? ? public void printName() {
? ? ? ? ? ? ? ? Console.WriteLine("動(dòng)物的名字叫"+_name);
? ? ? ? ? ? }
? ? ? ? ? ? //虛方法
? ? ? ? ? ? //virtual public void spicking() {
? ? ? ? ? ? //? ? Console.WriteLine("動(dòng)物說話了");
? ? ? ? ? ? //}
? ? ? ? ? ? //抽象方法 必須放在抽象類里面
? ? ? ? ? ? abstract public void spicking();
? ? ? ? }
? ? ? ? public class dog :pet{
? ? ? ? ? ? static int Num;
? ? ? ? ? ? static dog() {
? ? ? ? ? ? ? ? Num = 0;
? ? ? ? ? ? }
? ? ? ? ? ? public dog(string Name) : base(Name)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? ++Num;
? ? ? ? ? ? }
? ? ? ? ? ? new public void printName()
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Console.WriteLine("小動(dòng)物的名字叫" + _name);
? ? ? ? ? ? }
? ? ? ? ? sealed override public? void spicking()
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Console.WriteLine(_name +"說:汪汪汪");
? ? ? ? ? ? }
? ? ? ? ? ? static public void showDogNume() {
? ? ? ? ? ? ? ? Console.WriteLine("目前有"+Num+"條狗");
? ? ? ? ? ? }
? ? ? ? }
? ? ?
? ? ? ? public class cat : pet,upTree, jieko //在類中實(shí)現(xiàn)了接口,也需要實(shí)現(xiàn)接口中的方法
? ? ? ? {
? ? ? ? ? ? public cat(string Name) : base(Name)
? ? ? ? ? ? {
? ? ? ? ? ? ? ??
? ? ? ? ? ? }
? ? ? ? ??
? ? ? ? ? ? new public void printName()
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Console.WriteLine("小動(dòng)物的名字叫" + _name);
? ? ? ? ??
? ? ? ? ? ? }
? ? ? ? ? ? public override void spicking()
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Console.WriteLine(_name + "說:喵喵喵");
? ? ? ? ? ? }
? ? ? ? ? ? public void upTrees() {
? ? ? ? ? ? ? ? Console.WriteLine(_name + "爬樹");
? ? ? ? ? ? }
? ? ? ? ? ? public void chatchMoutc() {
? ? ? ? ? ? ? ? Console.WriteLine(_name + "抓老鼠");
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? static class showVideo
? ? {
? ? ? ? static public void PetGuide(this Program.dog dog)
? ? ? ? {
? ? ? ? ? ? Console.WriteLine("播放視頻");
? ? ? ? }
? ? }
}
2018-01-22
把PetGuide定義到namespace下面試試吧