ここから本文です

C#でC/C++のように構造体・クラスごとにファイルを分けて記述して#include"~.h"の...

tan********さん

2012/9/1611:56:19

C#でC/C++のように構造体・クラスごとにファイルを分けて記述して#include"~.h"のように使用する方法はありませんか?

#includeがC#では使用出来ないのは分かったのですが、C/C++から派生したC#でファイルを分割出来ないとは思えないのですが、ファイル自体も、「.cpp][.h]等では無く「コードファイル」、「クラス」、「インターフェイス」といった独自の物になっているようですしVBのようにすべて同じファイルに記述するのでしょうか?

補足dotnetmobile様解答ありがとうございます。

自分で調べてみたところ仰るとおり、partial class や name space を使うことでファイルを分割出来ることがわかったのですが、同じクラスを分けることが出来るという部分がよく理解できません。C/C++ではウィンドウを作るクラスがあれば、「Window.h/Window.cpp」といった具合にファイルを分けていましたが似た分け方を、C#では出来ないのでしょうか?

閲覧数:
23,454
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

「メソッド(関数)ごとに」と書かれずに、「構造体・クラスごとに」と書かれているので、基本的なことは、良く理解されている上での質問だと思います。
それに、

> #includeがC#では使用出来ないのは分かったのですが、

と書かれている点も、基本は理解されている上での質問だと思います。


[回答本編]

[プロジェクト] - [クラスの追加] で、「新しい項目の追加」画面を表示します。
その画面で適当なファイル名を入力して、[追加]ボタンをクリックして下さい。
そうすると、クラスや構造体を書くためのソースファイルが作成されます。


[上記回答の補足]

「それは、既に試してみたよ。しかし、追加したソースファイルのクラスが、Form1.cs 側で解釈されないから、基本的にどうするのか質問したのだよ」
と言うことだと思います。
クラス名をabc とすると、以下のように書きます。
下記のpublic が抜けていて、うまく行かないと悩まれている方が多いですので、その点を御注意下さい。

public class abc
{

}



[補足の件]

クラス内のメソッドが増え過ぎると、ソースファイルを分けたくなります。
その場合は、上記[回答本編]のやり方でソースファイルを増やします。
ただし、同一クラスのメソッドをそのまま分けたら、
「そのクラスは、既に存在します」
と言うエラーが出てしまいます。
そこで、「同一クラスのソースファイルを分けたんですよ」と開発環境に知らせるために、partial の記述をします。
書き方は、以下の通りです。


public partial class abc
{
}

分けたabc クラスの全てに、partial の記述をして下さい。



[ヘッダーのインクルードが不要な解釈]

上記のように、ソースファイルを分けた場合は、
「同一プロジェクト内のソースファイルなのだから、インクルード等の特別な操作をしなくても、開発環境は各ソースファイルを解釈可能」
と言う仕組みです。
「それならば、同一プロジェクト内ではなく、外部のライブラリの解釈は、どうなるのか」
と疑問に思うでしょう。
それは、[プロジェクト]-[参照の追加]で表示される「参照の追加」画面で、外部のライブラリの存在を解釈させます。
すなわち、ヘッダーのインクルードではなく、開発環境の操作で、外部のライブラリの存在を解釈させます。

質問した人からのコメント

2012/9/16 14:59:15

ご解答下さったお二方本当にありがとうございました。
大変分かりやすく的確なアドバイスでした。一番に解答いただいたdotnetmobile様には大変申し訳ありませんが、今回は一番知りたかった部分を教えていただきました。abiko_tetu様をベストアンサーに指名したいと思います。お二方とも本当にありがとうございました。

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

dot********さん

2012/9/1613:24:06

まず誤解があります。
C#はコアな文法こそCですが、内容・記法とも完全にJavaからの派生です。
現在こそ、C#4.0などになって見る影もなく拡張されていますが、C#1.0のころはそういうテイストだったです。
したがって、ネイティブなテキストベースのインクルードやリクワイアなどの機能はありません。

class、interfaceは独立して記述する(1ファイル中に混在して記述してもいいですが推奨されません)のが原則です。

ただ、classなどが巨大になったり、開発環境が自動生成するclassを利用者が拡張して使用したりするために、
partial classという機能がC#2.0から付加されていて、これを使えば1つのclassを複数のファイルに分割して記述できます。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる