안녕하세요 먼저 제글을 읽어주셔서 감사드립니다
클래스에 대해서 좀 더 자세히 알고 싶어서 이것저것 하는 도중
기본적으로 만들어진 프로그램 클래스 밖에서 다른 클래스를 만들었을 경우 변수선언을 하면
쓰지 못한다고 나옵니다. 같은 네임클래스 안에서 만들어진 클래스 인데 왜 그럴까요?
프레임워크 .net Core 3.1에서 테스트 해봤습니다
감사합니다
안녕하세요 먼저 제글을 읽어주셔서 감사드립니다
클래스에 대해서 좀 더 자세히 알고 싶어서 이것저것 하는 도중
기본적으로 만들어진 프로그램 클래스 밖에서 다른 클래스를 만들었을 경우 변수선언을 하면
쓰지 못한다고 나옵니다. 같은 네임클래스 안에서 만들어진 클래스 인데 왜 그럴까요?
프레임워크 .net Core 3.1에서 테스트 해봤습니다
감사합니다
두 가지를 살펴봐야 합니다.
int c = a + b;
class MySum
{
const int a = 8;
const int b = 10;
int c = a + b;
}
이렇게 const
로 하거나 static
이어야 합니다.aa.c
에 접근할 수 없습니다.public | protected | private
한정자를 명시적으로 사용하는게 좋습니다. 기본 한정자는 private
이므로 외부에서 접근할 수 없습니다.대신 아래와 같이 쓰는 것을 권장합니다.
class MySum
{
private int _a = 8;
private int _b = 10;
public int C => _a + _b;
}
class Program
{
static void Main(string[] args)
{
MySum aa = new MySum();
Console.WriteLine(aa.C);
}
}
참고로 int C => _a + _b
는 읽기만 되는 속성입니다. 그러므로 C를 얻으려 할 때마다 _a + _b
를 연산합니다.
완벽하진 않지만 알기쉽게 설명하자면 변수는 함수 내에서 사용할 수 있어요.
그리고 @산업역군 님께서 만드신 것은 필드라고 부릅니다.
함수를 만드신 다음 그 안에 저 a, b, c를 넣어보시면 원하는 결과가 나올거에요.
기초적인 질문이라 흥미가 없을 수도 있는데 자세한 답변 감사드립니다. 써주신 답변이 완벽하게 이해되는건 아니지만 답변 바탕으로 열심히 공부해보겠습니다! 다시 한번 소중한 시간 내주셔서 감사드립니다!!
맞습니다 필드! 답변 감사드립니다!!
조언 주신 내용으로 코드를 수정해봤습니다! 제가 원하는 값이 나왔습니다
using System;
using System.Collections.Generic;
namespace TEST3
{
class MySum
{
public int simpleSum()
{
int a = 8;
int b = 10;
int c = a + b;
return c;
}
}
class Program
{
static void Main()
{
MySum aa = new MySum();
Console.WriteLine(aa.simpleSum());
}
}
}
감사합니다!